如何防止空格被编码为`javascript:`URL?

时间:2012-04-18 07:56:19

标签: javascript

我正在尝试将以下内容用作执行javascript的网址:

javascript:var field = document.getElementsByName("actions[hide]"); + for (i = 0; i < field.length; i++)field[i].click();

但是,当我为它添加书签时,空格会得到URL编码,替换为%20,其中(由于我不知道的原因)导致JS代码无法工作。

javascript:var%20field%20=%20unescape%20document.getElementsByName("actions[hide]");%20+%20for%20(i%20=%200;%20i%20<%20field.length;%20i++)field[i].click();

3 个答案:

答案 0 :(得分:1)

如果你想创建一个书签我会建议你这个网站:

http://benalman.com/code/test/jquery-run-code-bookmarklet/

有人写道它用于jquery代码,但你也可以用这个生成器转换普通的javascript。或者您可以简化使用jquery并转换代码:

var field = document.getElementsByName("actions[hide]"); + for (i = 0; i < field.length; i++)field[i].click();

$('[name="actions[hide]"]').each(function() { $(this).click(); });

我每次创建一个新的书签时都会使用这个脚本而我喜欢它

编辑:当您输入代码时,必须将其粘贴,而不在前面添加“javascript:”文本。

答案 1 :(得分:0)

我也不明白你的javascript为url方案的目的。
无论如何,如果你将该字符串放入浏览地址栏以在当前网页中工作,可能它不会 您可以尝试调用匿名函数:

<a href="javascript:(function() { var field = document.getElementsByName('actions[hide]'); for (var i = 0; i < field.length; i++) { field[i].click(); } })();">Click me</a>

答案 2 :(得分:0)

在javascript中编码空格:URI不应该(根据我的经验)破坏脚本。问题很可能是你的+,它也是URI中的一个特殊字符(它也意味着一个空格),但是由于URI中的那个点允许使用该字符,因此不会被浏览器自动转换。

您需要将+字符编码为%2B(以及您在JS中可能包含的任何其他特殊字符)。

相关问题