这是我发现用于编写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链接),它运行正常。
答案 0 :(得分:5)
有几种方法可以做到这一点,一种是HTML-escape引号; "
的{{1}}或"
,"
的{{1}}。
另一种方式,我更喜欢将JavaScript书签作为字符串输入并在加载时将其附加到'
,这意味着您没有与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)
只需在代码中删除评论//
,它就可以运行;)