3

こんにちは、ウェブページを開くブックマークレットを作成しようとしています。そのページでダウンロードへのリンクを見つけてから、ウェブページを閉じます。それを行うためのより良い方法がない限り、ページを開き、ready を呼び出して (これは機能していない部分だと思います)、ダウンロード リンクを検索します。jQuery をインポートするためのコードは、http: //coding.smashingmagazine.com/2010/05/23/make-your-own-bookmarklets-with-jquery/から取得されます。

javascript:(function() {
var v = "1.3.2";

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() {
    var ytm = window.open('http://example.com');
    jQuery(document).ready(function() {
        var div = ytm.document.getElementById("dl_link");
        var links = ytm.document.getElementsByTagName('a');
        var dl = links[1];
        window.open(dl);});
    ytm.close();
}
})();

前もって感謝します!

4

2 に答える 2

2
function initMyBookmarklet() {
    var ytm = window.open('http://example.com');
    jQuery(document).ready(function() {

おそらくあなたが望むものに最も近いものは次のとおりです。jQuery(ytm.document).ready(function() {

ただし、その行が実行されるまでにドキュメントが存在することを確認することさえできないため、おそらくそれも機能しません。これを解決する方法は、まったく新しい問題のようです。

2 番目、3 番目、および 4 番目の回答は、ここに関連しています: jQuery/JavaScript: iframe のコンテンツへのアクセス

        var div = ytm.document.getElementById("dl_link");
        var links = ytm.document.getElementsByTagName('a');
        var dl = links[1];

jquery を使用している場合は、次のようにすることもできます。div = $('#dl_link', ytm.document); dl = $('a', ytm.document)[1];

        window.open(dl);});

おそらくあるはずですwindow.open(dl.href)

    ytm.close();
}

しかし、このブックマークレットが、開こうとしているウィンドウと同じドメインで実行されていない場合、同じオリジン ポリシーでより大きな問題が発生します。詳細については、Google および Stackoverflow で検索してくださいsame original policy bookmarklet。また、最初の答えはここに関連しています: jQuery/JavaScript: iframe のコンテンツへのアクセス

于 2013-04-08T18:35:09.897 に答える
0

そのコードに基づいて、使用しているブックマークレット コードはjqueryという関数内にある必要がありますinitMyBookmarklet。そうではないため、コードを実行したときに jquery はまだロードされていません。

于 2013-04-08T17:39:30.003 に答える