从地址栏执行JavaScript会导致浏览器退出页面?

11

我正在测试一个网页,我想从地址栏中执行一些JavaScript代码来更改某些内容(例如更改

的内容)。 我加载了该网页并在地址栏中输入了以下内容:

javascript:document.getElementById("message").innerHTML="anotherthing"

执行上述代码后,浏览器会更改 div 的内容,但立即退出页面。

我该如何避免这种行为?

谢谢。


尝试使用不同的JavaScript函数,看看页面是否仍然关闭:javascript:document.body.contentEditable%20=%20'true';%20document.designMode='on';%20void%200 - Stu1986C
1
为了在您的页面上进行调试和执行脚本,请熟悉您选择的浏览器的开发人员工具,这将使您的生活更加轻松 :) - Mathew Thompson
1
几乎每个浏览器(我怀疑IE也有)都有一些内置的开发者工具。无论是Firefox中的Firebug还是Chrome的开发者工具,或者其他任何工具,都非常方便,现在没有必要再通过地址栏执行一些JavaScript代码了;) - briosheje
4个回答

12
将 void(0); 添加到末尾即可解决该问题。

1
不错!实际上,只需要添加;0;就可以了。 - kolypto

10

另外一个解决方案:

javascript: (function(){ /* Your Javascript code goes here */ })();

3
当您将 javascript: 标签复制并粘贴到某些浏览器的 URL 栏中时,它会自动删除。这是一项安全措施,避免了一些攻击事件的发生。在过去,人们被要求将有害的 JavaScript 复制到他们的 URL 栏中,以便攻击者窃取数据。
如果您想执行此类 JavaScript,您可能需要手动输入 javascript: 部分,否则您的浏览器会认为您想搜索 document.getElementById(...)...
示例
将以下内容复制到地址栏:
javascript:alert('hi');

对于我来说,在Windows上的Chrome浏览器中,javascript:部分被删除,取而代之的是它假定我想要搜索alert('hi')

Example

更好的解决方案

根据您想要实现的目标,通过浏览器的JavaScript控制台执行JavaScript可能会更好。如果您不确定如何执行,请查看此链接:如何在不同的浏览器中打开JavaScript控制台?


0

替代方案:如果您不需要使用JavaScript更改内容,只需要更改div的内容,则可以使用浏览器中的开发人员工具来完成此操作。

在Firefox中:开发人员工具>检查器>右键单击HTML并选择“编辑为HTML”。

在Chrome中:工具>更多工具>开发人员工具>元素>右键单击HTML并选择“编辑为HTML”。

在IE中:开发人员工具> HTML>编辑图标(看起来像一支有铅笔的纸片)


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