[英]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僅允許以下參數,如果使用該參數:
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.