2012-04-18 26 views
1

我尝试使用下面的执行JavaScript的一个网址:如何防止空格被URL编码为`javascript:`URL?

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(); 
+6

'javascript:'URL方案是一个坏主意。使用普通的URL,并绑定“click”处理程序,使其[优雅地降级](http://en.wikipedia.org/wiki/Unobtrusive_JavaScript#Degrading_gracefully)。 – outis 2012-04-18 07:59:57

+0

你究竟做了什么(试图做)(http://www.catb.org/~esr/faqs/smart-questions.html#goal)?你想创建一个书签吗?如果是这样,它是为了什么? – outis 2012-04-18 08:03:48

+1

@outis,你读过这个问题还是只编辑它?这是一个书签(让)。 – kirilloid 2012-04-18 08:04:21

回答

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:”文本。

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> 
0

在JavaScript编码空间:URI的不应该(在我的经验并非如此)破坏脚本。这个问题很可能是你的+,它也是URI中的一个特殊字符(它也意味着一个空格),但不会被浏览器自动转换,因为该字符在URI中被允许。

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