JavaScript不能在IE上工作,但在所有其他浏览器中都可以

时间:2009-12-15 22:29:40

标签: javascript

代码用于在网页上添加密码,该密码适用于所有其他浏览器,但不适用于IE。

<HEAD>
<SCRIPT language="JavaScript">
<!--hide

var password;

var pass1="cool";

password=prompt('Please enter your password to view this page!',' ');

if (password==pass1)
alert('Password Correct! Click OK to enter!');
else
{
window.location="http://www.pageresource.com/jscript/jpass.htm";
}

//-->
</SCRIPT>
</HEAD> 

11 个答案:

答案 0 :(得分:4)

window.location 在IE6中不起作用。您可能需要 document.location

if ("cool" == prompt('Please enter your password to view this page!', '')) {
    alert('Password Correct! Click OK to enter!');
} else {
    document.location = "http://www.pageresource.com/jscript/jpass.htm";
}

答案 1 :(得分:4)

IE7默认禁用提示功能。

正如我之前的每个人都说过,除非这只是一个学习javascript类型的尝试 - “保护”是没用的。所有人都要做的就是禁用JS和/或查看你的源,以便重定向。

答案 2 :(得分:1)

好的,首先我希望你这样做是为了玩javascript,因为任何人都可以通过查看源代码来快速绕过你的安全性。要管理对站点的登录访问,您应该使用服务器端实现,如php,jsp,asp等。这些站点使用密码登录并在普通用户看不到的服务器上进行比较。无论如何,下面的代码应该有效:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
    <head>
        <title>HTML Test</title>
        <script type="text/javascript">
            function check()
            {
                var password;
                var pass1="cool";
                password=prompt('Please enter your password to view this page!',' ');
                if (password==pass1)
                    alert('Password Correct! Click OK to enter!');
                else
                    document.location="http://www.pageresource.com/jscript/jpass.htm";
            }
        </script>
    </head>
    <body onload="check()">
    </body>
</html>

答案 3 :(得分:0)

它看起来像你的第一行js:

<!--hide

应该是:

// <!-- hide

但看起来你可能还有其他问题。先尝试一下!

答案 4 :(得分:0)

尝试在if:

周围缠绕花括号
if (password==pass1){
    alert('Password Correct! Click OK to enter!');
} else {
    window.location="http://www.pageresource.com/jscript/jpass.htm";
}

你可能不再需要那些隐藏的东西了。祝你学习顺利。

答案 5 :(得分:0)

如果我的JavaScript只在IE中中断,我做的第一件事就是通过JSLint运行它,这是一个免费的工具,可以检查你的JS代码是否有错误。这可能会揭示导致IE窒息的原因。

答案 6 :(得分:0)

不要那样做!您正在向用户发送密码。所有用户必须做的是“查看源代码”,它就在那里。或者,用户可以从Javascript源获取密码隐藏的任何信息。

客户端验证对于数据格式之类的东西非常有用,但是任何敏感的东西都不应该在客户端完成,并且所有数据都应该在服务器上再次验证。请记住,恶意用户可以向您发送任何内容,完全绕过您的Javascript。

答案 7 :(得分:0)

这里的代码

if (password==pass1)
alert('Password Correct! Click OK to enter!');
else
{
window.location="http://www.pageresource.com/jscript/jpass.htm";
}

首先用花括号括起alert位来读取

if (password==pass1){
  alert('Password Correct! Click OK to enter!');
}

其次,与php和其他C语言不同,不要在新行中开始括号...
在javascript中,当解释器评估脚本时,它会查找指定语句结尾的分号,
如果未找到分号,则最接近的上一个换行符将替换为分号

因此,您的else块被评估为:

else;
{;
window.location="http://www.pageresource.com/jscript/jpass.htm";
};

而是将其写为

else{
  window.location="http://www.pageresource.com/jscript/jpass.htm";
}

答案 8 :(得分:0)

当我在所有IE版本中使用IETester的“打开网址”时,失败可以在输入提示的第一个窗口的所有窗口中工作,无论是使用IE窗口。

但是,当单独测试 时,它在所有已知浏览器(包括IE6 / 7/8)中都可以正常工作。我没有按照here概述的代码进行任何更改。

所以你的实际问题不在于提供的信息。

毋庸置疑,这种方法来自安全。

答案 9 :(得分:0)

  1. 我认为你在'if'行的末尾错过了一个波浪形,而在'else'行的开头则错过了另一个,或者,删除现在存在的两个。
  2. 所以,要么:

    if (password==pass1) {
     alert('Password Correct! Click OK to enter!');
    } else {
     window.location="http://www.pageresource.com/jscript/jpass.htm";
    }
    

    ..或者这个(虽然我从不以这种方式亲自编码)..

    if (password==pass1)
     alert('Password Correct! Click OK to enter!');
    else
     window.location="http://www.pageresource.com/jscript/jpass.htm";
    

    应该有用。

    另外,请尝试 window.location.href ,而不只是 window.location

    window.location.href = "http://www.pageresource.com/jscript/jpass.htm";
    

    当然,正如其他人提到的,你的方法不安全在客户端使用密码(&lt;! - hide不会隐藏源代码视图中的javascript )。

    希望这有帮助 -

答案 10 :(得分:0)

window.locationdocument.location,您需要更改代码的无错误跨浏览器实现。除非您真正引用窗口对象,否则切勿使用窗口;示例:window.close()