【问题标题】:how to deal with quotes in bookmarklets如何处理书签中的引号
【发布时间】:2012-12-24 22:56:31
【问题描述】:

这是我找到的用于编写 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 }
但如果我只运行 javascript(不使用 html 链接)它运行良好。

【问题讨论】:

  • 最简单的解决方案是将代码放在外部 js 文件中,并让小书签将文件添加到页面中。
  • 您的 html 代码中是否真的有换行符,或者它只是为了漂亮的因素而在这里?
  • 在您当前的脚本中,小书签中的引号没有问题,因为您没有在代码中使用双引号(用于分隔 HTML 属性)。但是,问题在于您的 cmets 和换行符。

标签: javascript bookmarklet


【解决方案1】:

属性中不能有// cmets 或换行符。它必须是一个长字符串。

如果要cmets,需要block cmets/*foo*/

它需要看起来像

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

【讨论】:

  • 添加的好建议,但这并不能回答有关引号问题的任何内容,这就是问题所要问的(并且标题清楚地说明了)。
  • 哈哈 - 是的,确实 - 这就像前端几年的一生:)
【解决方案2】:

只需在您的代码中删除 cmets // 即可;)

【讨论】:

    【解决方案3】:

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

    我更喜欢的另一种方法是在 JavaScript 中将小书签作为字符串输入,并在加载时将其附加到 &lt;a&gt;,这意味着您没有任何与 HTML 相关的问题,浏览器可以做到如果你保存它,所有的编码都给你。

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

    【讨论】:

      猜你喜欢
      • 2011-07-04
      • 1970-01-01
      • 1970-01-01
      • 2013-03-16
      • 2021-01-11
      • 1970-01-01
      • 2020-08-24
      • 2016-11-14
      • 1970-01-01
      相关资源
      最近更新 更多