如何处理bookmarklet中的引号

时间:2013-01-10 14:14:06

标签: javascript bookmarklet

这是我发现用于编写jQuery bookmarklet的脚本,我已经添加了三行代码。问题是jQuery代码有很多引号(对于选择器),因为我必须将bookmarklet放在 href =“javascript:code”一切都搞乱了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>

当我点击bookmarklet链接时,firebug说:SyntaxError:missing}在函数体之后 但如果我只运行javascript(不使用html链接),它运行正常。

3 个答案:

答案 0 :(得分:5)

有几种方法可以做到这一点,一种是HTML-escape引号; &quot;的{​​{1}}或&#34;"的{​​{1}}。

另一种方式,我更喜欢将JavaScript书签作为字符串输入并在加载时将其附加到&#39;,这意味着您没有与HTML和浏览器有任何HTML相关的问题如果您保存它,可以为您完成所有编码。

同样sbmaxx指出,您可能需要删除'条评论。这是因为预计URI不会有任何换行符,因此当放到一行时,注释永远不会结束。

答案 1 :(得分:3)

您不能在属性中添加//条评论或换行符。它需要是一个长串。

如果您想要评论,则需要阻止评论/*foo*/

它需要看起来像

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

答案 2 :(得分:0)

只需在代码中删除评论//,它就可以运行;)

相关问题