6

这是我找到的用于编写 jQuery 小书签的脚本,我已经添加了三行代码。问题是 jQuery 代码有很多引号(用于选择器),因为我必须将小书签放在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>

当我点击书签链接时,萤火虫说:SyntaxError: missing } after function body
但如果我只运行 javascript(不使用 html 链接)它运行正常。

4

3 回答 3

5

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

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

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

于 2013-01-10T14:20:39.117 回答
3

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

如果你想要评论,它需要是块评论/*foo*/

它需要看起来像

<a href="javascript:document.body.style.color='red';alert('no line breaks');void(0);">foo</a>
于 2013-01-10T14:22:57.360 回答
0

只需删除//代码中的注释,它应该可以工作;)

于 2013-01-10T14:21:26.070 回答