繁体   English   中英

JavaScript无法在IE上运行,但在所有其他浏览器中都可以

[英]JavaScript not working on IE, but OK in all other browsers

该代码用于在网页上添加密码,该密码适用于所有其他浏览器,但不适用于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> 

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";
}

IE7默认情况下禁用了提示功能。

就像我之前的每个人都说过的那样,除非这只是一种学习性的JavaScript类型,否则“保护”是没有用的。 任何人所要做的就是禁用JS和/或查看您的重定向源。

尝试在以下情况下将花括号括起来:

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

您可能也不再真的需要隐藏的东西。 祝您学习顺利。

好的,首先,我希望您只是这样做以与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>
  1. 我认为您在'if'行的末尾迷失了一个,而在'else'行的末尾迷失了一个,或者,删除现在存在的两个。

因此,要么:

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";

当然,正如其他人提到的那样,在客户端使用密码是不安全的<!-hide不会在源代码视图中隐藏javascript )。

希望这可以帮助 -

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

<!--hide

应该 :

// <!-- hide

但是看起来您可能还有其他问题。 首先尝试!

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

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

客户端验证非常适合诸如数据格式之类的事情,但是客户端不应该执行任何敏感的操作,并且应该在服务器上再次验证所有数据。 请记住,恶意用户可以向您发送任何内容,从而完全绕开您的Javascript。

这是这段代码

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";
}

当我使用IETester的“所有IE版本中的开放URL”时,无论使用哪个IE窗口,它都无法在输入提示的第一个窗口的所有窗口中工作。

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

因此,您实际的问题不在提供的其他信息中。

不用说,这种方法远非安全的。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM