使用Internet Explorer 8中的prompt()函数

7
我很难找到解决我的问题的方法。这是代码片段:

我正在遇到一个难题,这里是一段代码:

var ans = prompt("Mot de passe", '');
if (ans != '' && ans != null)
   __doPostBack('__Page', ans);
else
   window.location = "../Erreurs/NotAuthorized.aspx";

这段代码在Internet Explorer 9上运行得非常好。但是我的客户专门使用Internet Explorer 8,所以我用ieTester在IE8上进行了测试。但问题是提示框没有显示,并且因为输入为空字符串('')而自动重定向。

那么我该如何修复它,使其在Internet Explorer 8上正常工作呢?


将第二个参数添加一些内容是否有影响? - Jamund Ferguson
如果我在第二个参数中添加(例如)“test”,提示框也不会出现。这是ieTester的已知bug还是它在真正的IE8上无法工作? - Soader03
4个回答

8

在Internet选项中,IE有一个设置可以允许或拒绝调用prompt()函数。

IE prompt setting
(来源: adamhaskell.net)

默认情况下,在IE8中,此设置处于关闭状态。因此,对prompt()函数的调用会被忽略,并返回""

不建议使用prompt()函数,应该使用表单。


3

看起来这是针对IE-8的特定安全问题,我没有其他版本进行测试。调用prompt()会产生一个关于脚本窗口请求信息的警告。我可以点击允许,在刷新页面后,提示框会按预期出现。

如果您坚持使用prompt(),您可能需要规定目标机器上的安全设置以允许它。


2

微软开发者网站告诉我们,“prompt()”已经被弃用,并且由于安全原因通常被阻止:

“默认情况下,该方法在Internet区域的信息栏中被阻止。这有助于防止恶意站点发起欺骗攻击。”

请参见http://msdn.microsoft.com/en-us/library/ms536673.aspx


1

1
我认为问题在于提示信息甚至没有显示,而不是接下来的if语句。 - Elliot Bonneville
是的,刚看到这个帖子...但我无法在IE7或6上使其工作。 - Soader03

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接