如何处理bookmarklet中的引号

Pou*_*a P 6 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>
Run Code Online (Sandbox Code Playgroud)

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

Pau*_* S. 5

有几种方法可以做到这一点,一种是HTML-escape引号; &quot;&#34;",&#39;'.

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

另外,正如sbmaxx指出的那样,您可能需要删除//注释.这是因为URI不会有任何换行符,因此注释在放到一行时永远不会结束.


epa*_*llo 3

属性中不能有//注释或换行符。它必须是一根长绳子。

如果要评论,就需要屏蔽评论/*foo*/

它需要看起来像

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