6

これは、jQuery ブックマークレットを作成するために見つけたスクリプトで、3 行のコードを追加しました。問題は、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>

ブックマークレットのリンクをクリックすると、firebug は次のように言います: SyntaxError: missing } 関数本体の後にあります
が、(html リンクを使用せずに) javascript のみを実行すると、正常に実行されます。

4

3 に答える 3

5

これを行うにはいくつかの方法があります。1 つは、引用符を HTML エスケープすることです。&quot;または&#34;のため"に、&#39;のために'

もう 1 つの方法は、JavaScript でブックマークレットを文字列として入力し、<a>読み込み時にブックマークレットに添付することです。つまり、HTML 関連の問題はなく、ブラウザーがすべてのエンコードを実行できます。あなたはそれを保存します。

また、sbmaxxが指摘したように、//コメントを削除する必要がある場合があります。これは、URI に改行が含まれていないことが想定されているため、コメントが 1 行に収まるとコメントが終わらないためです。

于 2013-01-10T14:20:39.117 に答える
3

//属性にコメントや改行を含めることはできません。1 つの長い文字列である必要があります。

コメントが必要な場合は、ブロックコメントにする必要があります/*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 に答える