0

このプロセスに従うブックマークレットを作成しようとしています:

  1. 任意のページから、ブックマークレットをクリックします
  2. 特定のページをロードします。
  3. ページをリロードさせる入力ボタンをトリガーする
  4. リロードしたら; 新しいページを開きます。この場合はソーシャル メディア ページです。

これは私がこれまでに書いたものです:

if (!($ = window.jQuery)) { 
// Inject jQuery to make life easier  
    script = document.createElement( 'script' );  
    script.src = 'http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js';  
    script.onload=SocialCredentials;  
    document.body.appendChild(script);  
}  
else {  
    SocialCredentials();  
}  

function SocialCredentials(){
    $('input:submit').trigger('click'); 
    window.open('http://www.facebook.com', '_blank');
}

送信ボタンをクリックすると、ページでユーザーの資格情報が処理およびクリアされ、ソーシャル サイトにアクセスできるようになります。

上記のコードは機能しますが、新しいソーシャル メディア ページを開く前に、ページの読み込みが完了していることを確認したいと考えています。

何らかのwait()機能を追加する必要がありますか?待機メソッドを追加すると、JavaScript が強制終了され、新しいウィンドウが開かれなくなりますか? 私は JavaScript にかなり慣れていないので、これらのタイプのメカニズムに慣れていません。

編集:このブックマークレットが機能するページへのアクセスまたは制御がないため、フローを変更できないことに注意してください。私がやろうとしているのは、別の部門が変更を加えられるまでの迅速な修正として、別の部門に有利になることです。

Edit2: プロセスを更新しました。

4

1 に答える 1

2

ページがリロードされると、そのページで現在実行されているすべてのコード (ブックマークレットのコードを含む) が終了し、削除されます。従来、ブックマークレットのコードは、ページの読み込み後にユーザーが再度クリックすると機能しなくなりました。

私が知っている3つの回避策があります。

A.) ページをロードするプロセスを変更して、代わりに AJAX を使用します。

B.) ページをロードするプロセスを変更して、代わりに新しいウィンドウを開き、JavaScript を使用して新しいウィンドウを操作します。

C.) ページの読み込みをトリガーする前に、新しい子ウィンドウを開き、コードを挿入します。その子ウィンドウのコードは、その親を監視し、親がリロードされた後でも親に対してアクションを実行できます。

于 2013-05-23T04:48:47.030 に答える