2013-01-10 42 views
4

这是我为编写jQuery书签找到的一个脚本,并且我向它添加了三行代码。问题是jQuery代码有很多引号(对于选择器),因为我必须将bookmarklet放在一个href =“javascript:code”10一切都会与href的双引号搞砸。 这里是我的代码看起来像,我试图在许多方面逃避双引号,但没有工作。有没有办法解决这个问题?
如何处理书签中的引号

<a href="javascript:(function(){ 

// the minimum version of jQuery we want 
var v = '1.3.2'; 

// check prior inclusion and version 
if (window.jQuery === undefined || window.jQuery.fn.jquery < v) { 
    var done = false; 
    var script = document.createElement('script'); 
    script.src = 'http://ajax.googleapis.com/ajax/libs/jquery/' + v + '/jquery.min.js'; 
    script.onload = script.onreadystatechange = function(){ 
     if (!done && (!this.readyState || this.readyState == 'loaded' || this.readyState == 'complete')) { 
      done = true; 
      initMyBookmarklet(); 
     } 
    }; 
    document.getElementsByTagName('head')[0].appendChild(script); 
} else { 
    initMyBookmarklet(); 
} 

function initMyBookmarklet() { 
    (window.myBookmarklet = function() { 
     // your JavaScript code goes here! 
     var loc=window.location; 
     $('body').append('<form id=\'IDform\' action=\'http:/pourid.3eeweb.com/read.php\' method=\'post\' ><input name=\'url\' type=\'text\' value=\''+loc+'\' /></form>'); 
     $('#IDform').submit(); 
    })(); 
} 

})();">bookmarklet</a> 

当我的书签点击链接,萤火说:语法错误:缺少}后,函数体
但如果我只运行的JavaScript(不使用HTML链接),它运行良好。

+0

最简单的解决方法是将代码放在外部的js文件,并有书签添加文件到页面。 – epascarello

+0

你确实在html代码中有换行符,还是只是在这里寻找相当的因素? – epascarello

+0

在您当前的脚本中,因为您没有在代码中使用双引号(用于分隔HTML属性),所以书签库中的引号不存在问题。但是,问题是您的意见和换行符。 – MrWhite

回答

3

你不能在属性//意见或换行。它需要是一个很长的字符串。

如果你想评论,它需要的块注释/*foo*/

它必须看起来像

<a href="javascript:document.body.style.color='red';alert('no line breaks');void(0);">foo</a> 
4

有几种方法可以做到这一点,一种是HTML转义引号; &quot;&#34;对于"&#39;对于'

另一种方式,我的首选方法是在JavaScript中以字符串的形式输入书签并在加载时将其附加到<a>,这意味着您没有任何与HTML相关的问题,并且浏览器可以执行所有操作为你保存编码。

也作为sbmaxx指出,您可能需要删除//评论。这是因为一个URI不会有任何换行符,因此当放到一行时注释永远不会结束。

0

只要删除评论中的代码//,它应该工作;)