javascript - hur man hanterar citattecken i bokmärkes-skript
detta är ett skript jag hittade för att skriva jQuery-bookmarklets och jag har lagt till tre rader kod till det. problemet är att jQuery-kod har många citattecken (för selektorer) och eftersom jag måste lägga bookmarklets i en href="javascript:code" blir allt rörigt med href:ens dubbla citattecken. här är hur min kod ser ut, jag försökte att undkomma dubbla citattecken på många sätt, men inget fungerade. finns det ett sätt att hantera detta problem?
<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>
när jag klickar på bokmärkeslänken säger firebug: SyntaxError: missing } after function body
men om jag kör javascriptet ensam (utan att använda en html-länk) fungerar det bra.
Svar #1
Det finns ett par sätt att göra detta, ett är att HTML-escapa citattecknen; " eller " för ", ' för '.
Det andra sättet, mitt föredragna, är att ange bokmärkesletaren som en sträng i JavaScript och fästa den vid <a> vid laddningstid, vilket innebär att du inte har några HTML-relaterade problem med den och webbläsaren kan göra all kodning åt dig om du sparar den.
Som sbmaxx också påpekade kan det hända att du behöver ta bort //-kommentarerna. Detta beror på att en URI inte förväntas ha några radbrytningar och därför skulle kommentaren aldrig ta slut när den sätts på en rad.
Svar #2
Du kan inte ha //-kommentarer eller radbrytningar i attributet. Det måste vara en lång sträng.
Om du vill ha kommentarer måste det vara blockkommentarer /*foo*/
Det behöver se ut som
<a href="javascript:document.body.style.color='red';alert('no line breaks');void(0);">foo</a>
