gpt4 book ai didi

javascript - window.open 在 IE7-8-9b 中抛出无效参数

转载 作者:可可西里 更新时间:2023-11-01 01:46:31 24 4
gpt4 key购买 nike

我对 javascript 了解不够,无法弄清楚为什么此脚本中以“window.open...”开头的行在 IE7-8-9b 中引发无效参数错误。在 Firefox 和 Webkit 中运行良好。

(该脚本通过 html 链接中的 onclick="share.fb()" 调用,并弹出一个新的浏览器窗口以在 FB 和 Twitter 上共享)。

var share = {
fb:function(title,url) {
this.share('http://www.facebook.com/sharer.php?u=##URL##&t=##TITLE##',title,url);
},
tw:function(title,url) {
this.share('http://twitter.com/home?status=##URL##+##TITLE##',title,url);
},
share:function(tpl,title,url) {
if(!url) url = encodeURIComponent(window.location);
if(!title) title = encodeURIComponent(document.title);

tpl = tpl.replace("##URL##",url);
tpl = tpl.replace("##TITLE##",title);

window.open(tpl,"sharewindow"+tpl.substr(6,15),"width=640,height=480");
}
};

最佳答案

IE 不允许在窗口名称(第二个参数)中使用空格和其他特殊字符。在作为参数传递之前,您需要删除它们。

替换

"sharewindow"+tpl.substr(6,15)

通过

"sharewindow"+tpl.substr(6,15).replace(/\W*/g, '')

这样你就可以得到

window.open(tpl,"sharewindow"+tpl.substr(6,15).replace(/\W*/g, ''),"width=640,height=480");

(这基本上是一个正则表达式替换,表示“用任何东西替换每个非 aplhabetic 字符序列”)

现场演示 here (必要时配置弹出窗口拦截器)

关于javascript - window.open 在 IE7-8-9b 中抛出无效参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4840369/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com