這是谷歌Chrome擴展開發。我正在使用內容腳本注入網頁。不過,有些網頁有自己的ajax腳本,可以動態地改變內容。我如何等待這些腳本完成,因爲在完成之前我的腳本無法獲得正確的內容?如何在注入腳本時等待嵌入的ajax調用完成?
例如,
1 - 谷歌搜索結果頁面上,
2 - 我想「文本」追加到每一個搜索結果的項目,它可以通過調用很容易做到的稱號,
$('h3').append("text");
3-後來聽搜索查詢的變化,由
$('input[name="q"]').change(function(eventObj){
console.log("query changed");
// DOESN'T work
$('h3').append("text");
});
洛杉磯完成st line不起作用可能是,因爲在執行時頁面仍在刷新,$('h3')
不可用。在頁面上更改查詢時,Google使用ajax來刷新搜索結果。
所以問題是如何捕捉這個變化和仍然能夠每次成功追加「文本」?
編輯:
嘗試過,並沒有工作,要麼:
$('h3[class="r"]').delay(1000).append("text");
,並使用.delay()
是不是真的首選。
編輯:
.delay()
根本就不是設計用來解決暫停比UI效果等腳本的執行。一個解決辦法是
$('input[name="q"]').change(function(eventObj) {
setTimeout(function() {
$('h3[class="r"]').append(" text");
}, 1000);
});
但正如我之前所說,setTimeout()
是連接速度相關的,不好的,因爲我必須手動平衡的等待時間和響應速度(我的劇本)。
雖然這篇文章被低估了天知道爲什麼我仍然會等待一個優雅的答案。
在該代碼中,您延遲1秒後添加內容。更改訂單。 –
@SkalárWag感謝您指出。編輯。 – ShuaiYuan