问题
I am having a hard time figuring out a solution for my problem. Here's a code snippet:
var ans = prompt("Mot de passe", '');
if (ans != '' && ans != null)
__doPostBack('__Page', ans);
else
window.location = "../Erreurs/NotAuthorized.aspx";
This code works really great with Internet Explorer 9. But my client is exclusively working with Internet Explorer 8 so I tested it with ieTester in IE8. But the problem is that the prompt doesn't show and it automatically redirect because the input had an empty string ('').
So how do I fix this to work with Internet Explorer 8?
回答1:
It looks like a security thing specific to IE- 8 for sure, I don't have other versions to test. Calling prompt()
produces a warning about a scripted window asking for information. I can click to allow and after refreshing the page, the prompt box appears as expected.
If you are going to insist on using prompt()
, you will probably have to stipulate that security settings on the target machines are configured to allow it.
回答2:
IE has an setting in Internet Options to allow or deny prompt()
.
(source: adamhaskell.net)
By default in IE8, this setting is off. Consequently, calls to prompt()
are ignored and ""
is returned by them.
You shouldn't use prompt()
anyway. Use a form.
回答3:
Microsoft developer website tells us that "prompt()" is deprecated and now normally blocked for security reasons: "By default, this method is blocked by the information bar in the Internet zone. This helps prevent malicious sites from initiating spoofing attacks. "
See http://msdn.microsoft.com/en-us/library/ms536673.aspx
回答4:
From this report it looks like it's a known bug in IETester?
http://www.my-debugbar.com/forum/t294-Javascript-Alerts.html
来源:https://stackoverflow.com/questions/10197147/prompt-with-internet-explorer-8