![](/img/trans.png)
[英]Chrome Extension: content script is unable to load local HTML file into iframe
[英]Load Local HTML Into Div (Chrome Extension)
我沒有使用框架,而是想實現一種架構,在該架構中,單個html文件可容納布局的框架,而某些其他html代碼段則會加載到該布局的各個div中。 代碼都在我的主擴展文件夾/ popup /中的相同目錄位置中
我想構建一個非常簡單的函數,將本地保存的html代碼片段加載到div元素中。 這是我的第一次嘗試:
function loadView(viewName,destination){
var URL = "/popup/"+viewName;
var client = new XMLHttpRequest();
client.open('GET', URL, false);
client.onreadystatechange = function() {
document.getElementById(destination).innerHTML = client.responseText;
}
client.send();
}
// Example of a call
loadView('contact.html','widgetBox');
顯然,這很可怕,因為它依賴於將ajax設置為false。 但是在此解決方案下,這是必需的,因為腳本中的下一行代碼可能/確實會嘗試操縱新加載的內容。
不依賴於ajax的達到類似結果的方法是什么? (或至少,這將解決使用asynch false的需求)
筆記:
您應該讓您的loadView
函數接受回調作為第三個參數。 然后,在Ajax調用完成時調用它。 這樣,您可以使用異步請求。
function loadView(viewName, destination, callback){
var URL = "/popup/"+viewName;
var client = new XMLHttpRequest();
client.open('GET', URL);
client.onreadystatechange = function() {
if (client.readyState < 4) return; // Wait until the request completes
document.getElementById(destination).innerHTML = client.responseText;
callback();
}
client.send();
}
// Example of a call
loadView('contact.html', 'widgetBox', function() {
// Do whatever comes next
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.