4

私はブックマークレットのコーディングに不慣れで、通常のJavaScriptがブラウザで正常に機能するが、ブックマークレットのバージョンでは機能しないという問題が発生しました。

画像を見つけてBBコードに変換するブックマークレットを見つけましたが、これは正常に機能しますが、jQueryが読み込まれるため、常にそれを実行したくありませんでした。だから私は基本的にそれの必要性を取り除こうとしていましたが、今ではブックマークレットとしては機能しません。

元のブックマークレットは次のとおりです。

javascript:document.body.appendChild(document.createElement('script')).src='http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js';var%20pictureurl=jQuery('img[id$=%22myImage%22]').attr('src');var%20linkurl=document.location.href;alert('%5BURL='+linkurl+'%5D%5BIMG%5D'+pictureurl+'%5B%2FIMG%5D%5B%2FURL%5D');

通常のJSコードとして機能する私のJavaScriptは次のとおりです。

// Create array variables
var imgs = [];

// Put all of the documents tags in to the arrays
imgs = document.getElementsByTagName('img');

var pictureurl = '';
var linkurl = document.location.href;

for(var i = 0; i < imgs.length; i++){
    var str = imgs[i].getAttribute('id');
    var find = str.search("myImage"); 
    if(find != -1){
        pictureurl = imgs[i].getAttribute('src');
        alert('[URL=' + linkurl + '][IMG]' + pictureurl + '[/IMG][/URL]');
    }
}

javascript:を追加し、最小化されたコードを追加すると、何を試しても機能しません。誰かが私がこれを機能させるのを手伝ってくれるなら、それは大きな助けになるでしょう、ありがとう。

4

1 に答える 1

8

ええ、あなたはあなたのコードにエラーがあります。どこにあるかを言うのではなく、自分で見つける方法を紹介したいので、ここにマイクロチュートリアルがあります;)

  1. //ブックマークレットは1行になるため、JSコードから行コメント( )を削除します。あなたはコードで終わるはずです:

    var imgs = [];
    imgs = document.getElementsByTagName('img');
    var pictureurl = '';
    var linkurl = document.location.href;
    for(var i = 0; i < imgs.length; i++){
        var str = imgs[i].getAttribute('id');
        var find = str.search("myImage"); 
        if(find != -1){
            pictureurl = imgs[i].getAttribute('src');
            alert('[URL=' + linkurl + '][IMG]' + pictureurl + '[/IMG][/URL]');
        }
    }
    
  2. コードから改行文字を削除し、コードの前にjavascript:プロトコルを付けて、コンテンツがJavaScriptコードであることをChromeが認識できるようにします。これで、コードは次のようになります。

    javascript: var imgs = []; imgs = document.getElementsByTagName('img'); var pictureurl = ''; var linkurl = document.location.href; for(var i = 0; i < imgs.length; i++){     var str = imgs[i].getAttribute('id');     var find = str.search("myImage");      if(find != -1){         pictureurl = imgs[i].getAttribute('src');         alert('[URL=' + linkurl + '][IMG]' + pictureurl + '[/IMG][/URL]');     } }
    
  3. ブックマークレットをブックマークとして作成し、アクセス可能であることを確認します(つまり、Chromeウィンドウでクリックできるように表示されます)。

  4. ブックマークレットコードをテストするページに移動します。
  5. + +を押して、開発者ツールを開きます。CTRLSHIFTI
  6. Consoleという名前のタブに切り替えます。
  7. ブックマークレットをクリックします。
  8. これで、ブックマーレットのコードの実行中に発行されたエラー/警告がコンソールに表示されます。
  9. あなたのコードの場合、それは吐き出します:

    Uncaught TypeError: Cannot call method 'search' of null (program):1
    (anonymous function)
    

の値に属性の値が含まれているためsearch()に呼び出されるため、これは妥当なようですが、すべてのタグに割り当てられているわけではありません。strIDIMGid

(program):1すばらしいのは、ウィンドウの右側にあるをクリックして、コードをデバッグしたり、変数を調べたりできることです。

于 2013-01-21T13:37:17.410 に答える