我对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");
}
};
答案 0 :(得分:33)
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");
(这基本上是一个正则表达式的替代品,上面写着“无需替换每个非语言字符序列”)
现场演示here(必要时配置你的弹出窗口拦截器)