簡體   English   中英

ie8 var w = window.open() - “消息:參數無效。”

[英]ie8 var w= window.open() - “Message: Invalid argument.”

我有一個只有IE8問題的網站:

代碼是:

var w = window.open(urlstring, wname, wfeatures, 'false');

錯誤是:

消息:參數無效。
行:419字符:5
代碼:0
URI: http://HOSTNAME/js_context.js

我已經確認代碼的行號(“行”和“URI”是正確的),我理解在IE8的更高版本中,這被認為是准確的。

我通過轉儲警報檢查了調用中的所有傳入參數,它們看起來都是有效的。

這個問題不會發生在FF(可能是3)上。

更新:

問題似乎是在執行“var w”時使用window.open()的結果。 當我將該行分成兩個語句時,它在IE8中有效。

UPDATE2:

基於:

http://javascript.crockford.com/code.html

當要立即調用函數時,整個調用表達式應該包含在parens中,以便很明顯生成的值是函數的結果而不是函數本身。

這不完全是這里發生的事情,但我發現在IE8的兼容模式下應用該原則解決了這個問題。

var w = (window.open(urlstring, wname, wfeatures, false));

這是一個舊帖子,但可能仍然對某人有用。

我有相同的錯誤消息。 最后問題是第二個參數的名稱無效,即我有一個像:

   window.open('/somefile.html', 'a window title', 'width=300');

問題是'窗口標題',因為它無效。 它在以下行中運行良好:

   window.open('/somefile.html', '', 'width=300');

事實上,仔細閱讀我意識到微軟不支持將name作為第二個參數。 當您查看官方文檔頁面時 ,您會看到Microsoft僅允許以下參數,如果使用該參數:

  • _空白
  • _媒體
  • _parent
  • _搜索
  • _自
  • _最佳

IE對窗口名稱參數很挑剔。 它不喜歡空格,破折號或其他標點符號。

在IE中調用window.open時,第二個參數(窗口名稱)必須是預定義的目標字符串之一或字符串,它在JavaScript 中具有有效標識符形式

那么,在Firefox作品:“作業目錄9463460”, 並沒有在互聯網爆工作,並已被替換為:“Job_Directory_9463460”為例(沒有空格,沒有減號,沒有點,它必須是一個有效的標識符) 。

問題可能是wname,嘗試使用上面鏈接中顯示的那些之一,我引用:

可選的。 用於指定窗口名稱的字符串。 此名稱用作表單或錨元素上的TARGET屬性的值。

  • _blank將sURL加載到一個未命名的新窗口中。
  • _media網址已加載到Microsoft Internet Explorer 6中的媒體欄中.Microsoft Windows XP Service Pack 2(SP2)及更高版本。 不再支持此功能。 默認情況下,URL會加載到新的瀏覽器窗口或選項卡中。
  • _parent將sURL加載到當前幀的父級中。 如果框架沒有父級,則此值用作值_self。
  • _search在Windows Internet Explorer 7中禁用,有關詳細信息,請參閱Internet Explorer 7中的安全性和兼容性。 否則,將在Internet Explorer 5或更高版本的瀏覽器搜索窗格中打開sURL。
  • _self將當前文檔替換為指定的sURL。
  • _top sURL替換可能加載的任何框架集。 如果沒有定義框架集,則此值用作值_self。

如果使用另一個wname,window.open將不會執行...

實際上可以使用一個名稱,但它不能有空格,所以window.open("../myPage","MyWindows",...)應該沒有問題( window.open )。

我在使用以下代碼時也遇到了這個問題:

window.open('test.html','Window title','width=1200,height=800,scrollbars=yes');

但當我刪除“窗口標題”空白時,下面的代碼正在工作:

window.open('test.html','Windowtitle','width=1200,height=800,scrollbars=yes');

嗨使用以下代碼工作...

onclick="window.open('privacy_policy.php','','width=1200,height=800,scrollbars=yes');

以前我輸入過像

onclick="window.open('privacy_policy.php','Window title','width=1200,height=800,scrollbars=yes');

意味着微軟不允許你在window.open函數中輸入窗口名稱它應該是空白的...

謝謝,Nilesh Pangul

對我來說,問題是在窗口名稱字段中使用短划線“ - ”。 我刪除了破折號,IE沒有錯誤輸出,實際上打開了窗口。

這里的答案是正確的,因為IE在window.open()中設置標題時不支持空格,似乎沒有提供解決方法。

我從window.open調用中刪除了標題(您可以使用null或''),並將以下內容添加到正在打開的頁面中:

<script>document.title = 'My new title';</script>

無論如何都不理想,但這將允許您在所有瀏覽器中將標題設置為您想要的任何內容。

第四個位置代表什么,哪個具有'假'作為價值? 不應該是假的(即沒有引號?)。 早期版本的IE可能會將字符串強制轉換為布爾值,但較新版本的則不會。

我發現了同樣的問題,在閱讀了第一個回答后認為問題是由窗口名稱引起的,改變了它:首先是'_blank',哪個工作正常(兼容性和常規視圖),然后到前一個值,只有減去價值空間:) - 也有效。 IMO,問題(或其中的一部分)是由IE無法使用普通字符串值作為wname引起的。 希望如果有人遇到同樣的問題,這會有所幫助。

即使使用window.open使用“有效”自定義窗口名稱(不是_blank等)來啟動新窗口,仍然存在問題。 它在第一次單擊鏈接時工作正常,但如果再次單擊它(第一個啟動的窗口仍然處於運行狀態),則會收到“錯誤:不支持此類接口”腳本調試。

如果你想使用新窗口的名稱等發布表格到這個窗口,那么解決方案,在IE,FF,Chrome中工作:

  var ret = window.open("", "_blank");
  ret.name = "NewFormName";

  var myForm = document.createElement("form");
  myForm.method="post";
  myForm.action = "xyz.php";
  myForm.target = "NewFormName";

      ...

嘗試刪除最后一個參數。 除此之外,請確保存在urlstring,wname和wfeatures。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM