2012-02-14 21 views
1

ページがロードされた後に、以下の例のように6秒の遅延でjavascriptを実行したいと思います。ページがロードされた直後にJSの残りの部分が失われます(明らかに)... ボタンをクリックせずにページが読み込まれた後のコンテンツの変更方法はありますか?ページを読み込んだ後にコンテンツを変更する方法(JS)?

javascript:window.location = "http://example.com"; 
setTimeout(function() { 
    document.getElementById('lightbox').style.display = 'none'; 
}, 6000); 
+1

googleで「dom操作」を参照してください。 –

+0

私はそれを作ることに失敗しました。私は6時間以上解決策を探しています。これが私の最後の希望です。 – virusbogdan

+0

window.locationがロードされたページにスクリプトを追加したいですか?このページはあなたのものではないと思いますか? – Jivings

答えて

3

window.locationを設定すると、元のページがアンロードされてから、新しいページがブラウザによって読み込まれます。つまり、新しいページが読み込まれる前にスクリプトがなくなり、新しいHTMLをもう修正できなくなります。

この現象は、ブラウザのセキュリティモデルに固有の現象です。それがなければ、選択した任意のWebサイトにJavaScriptを注入することができ、セキュリティ上の大きなリスクになります。あなたが求めているのはいわゆるXSS(クロスサイトスクリプティング用)です。これはブラウザがいわゆるSOP(同じ元のポリシーの場合)を適用することによって妨げられます。

安全な方法でこの制限を回避するには、いくつかの一般的な方法があります。

あなたのJavaScriptと元のサイトの両方にサービスを提供するためのプロキシを設定し
  1. 。このようにして、スクリプトと元のサイトの両方が同じドメインから来て、ブラウザの同じ元のポリシー(SOP)を満たします。カスタムスクリプトを最上位のウィンドウに配置して、元のサイトをiframe内で実行できます。あるいは、プロキシを介して取得されるスクリプトをHTMLに挿入することもできます。

  2. スクリプトをブラウザのアドオンまたはユーザスクリプトとして実行します。これを行うことを選択した場合、ユーザは特別な権限を持ってローカルで実行する権利をスクリプトに与える必要があります。 Greasemonkeyは数年前にFirefox用のクライアントサイドスクリプトを普及させましたが、最近彼らは勢いを失ったようです。

  3. あなたのスクリプトを含めるようにサイトの所有者に依頼してください。私はこれがあなたの状況にとって有効な選択肢であるとは思わない。しかし、それが有効なオプションであれば、それは間違いなく最も単純なものです。

  4. サイトの読み込み後にスクリプトを実行するようにユーザーに依頼します。これはおそらくあなたにとっても有効ではありませんが、有効であれば、もう一度非常に簡単な解決策になります。

0

あなたの言っていることを理解できませんでした。 JSは失われていますか?もっと明確にしてください。
DOMの準備ができてから実行されるjquery ready関数です。
それ以外の場合は、window.onload()機能を試してみてください。

+0

申し訳ありません私は自分自身をきれいにしませんでした(英語は私の主な言語ではありません、私は最善を尽くします) コードはウィンドウが読み込まれるまで実行されます。残りは新しいページでは実行されません。 自分自身を試してください - javascript:window.location = "http://google.com"; setTimeout(function(){alert( 'Loaded complete');}、0); – virusbogdan

0

これは、ジョブを実行する必要があります。

$(window).bind('load', function() { 
// your code here 
}); 

を次に、単にあなたのページが完全にロードされたときに挿入されたコードのみが実行されます.delay("6000");

で追加したコードに遅延を追加します。

1

例では、最初にリダイレクトして#lightboxを非表示にしています。 #lightboxが非表示になる前にブラウザを別のサイトにリダイレクトするので、このスクリプトは機能しません。

つまり、ユーザーを別のURL(または同じURL)にリダイレクトすると、前のページのJavascriptで次のページのDOMを操作することはできません。 「現在開いているページ」のJavascriptのみが現在開いているページを操作でき、他のページは操作できません。

+0

はい、これが問題です。私はこれのための解決策を見つけようとするが、不可能と思われる? – virusbogdan

+0

はい、不可能です。リダイレクト先のサイトにもアクセスできる場合は、リダイレクト時に特定のGET変数などを送信して、ターゲットサイトのJavaScriptを適切に処理できます。しかし、物事をまとめるために、はい、別のページのJavascriptを制御することは不可能です。 JavaScriptは、読み込んだページ内に含まれています。 – kingmaple

関連する問題