1

新しいグーグルインスタントページが提供されたときに電話をかけ、結果を変更する必要があるブラウザ拡張機能に取り組んでいます(SEOQuakeを考えてください)。

問題:ユーザーがリンクをURLフィールドに直接貼り付けて、Enterキーを押すと、新しいページの読み込みが発生し、拡張機能が実行されます。ただし、Google Instantでは、クエリを入力するとURLが変更されますが、技術的には同じページにいるため、拡張機能は実行されません。

私はSEOQuakeのコードを見ました、そしてこれは彼らが問題を解決する方法のようです:

document.body.addEventListener("DOMNodeInserted", sq_bindAsEventListener(this, function(event) { //

これは素晴らしいソリューションですが、私が知る限り、DomNodeInsertedはバージョン9より前のIEではサポートされていないため、私にとっては理想的ではありません(驚きです!)

アプリと一緒にjQueryをバンドルしているので、すべてのjQuery関数にアクセスできます。.keypress()を使用することを考えていて、入力が1秒間なくなるまで待つだけです。これがグーグルインスタントの場合、ページが変更されたことがわかります。

私が持っていたもう1つの考えは、URLが変更されたかどうかを監視することです。URLが変更されたかどうかを追跡するjqueryまたはjavascript関数が見つからないようです。

グーグルインスタント検索が実行されたことを知るための最良の方法は何ですか?

4

2 に答える 2

0

大まかな解決策: setInterval() を使用して、window.top の場所が変更されたかどうかを確認します (つまり、新しいクエリが実行されたことを意味します)。

于 2012-08-15T15:20:43.333 に答える
0

hashchange を聞くのがよい方法かもしれません。

古い IE (<8 ??) ではイベントが表示されないため、まだタイマーが必要な場合があります。もちろん、インスタントがIE7で利用できる場合のこのすべての問題は、とにかくそうであるとは思えません。

于 2013-05-22T17:05:12.827 に答える