因此,我正在做的是使用僅使用file_get_contents
的超級簡單PHP代理,我獲取HTML並將其轉換爲UTF-8格式的htmlentities。之後,用jQuery進行AJAX調用,我希望將包含標記的整個HTML,<html><head><body>code..</body></head></html>
放入iframe中,然後使用jQuery遍歷它來搜索輸入。有沒有辦法做到這一點?如果可以通過其他方式來實現,我只是在做iframe,因爲我認爲這是最好的選擇。由於它是一個完整的HTML文檔,其中包含doctype和所有我認爲我不能將它附加到div然後遍歷它。我的jQuery代碼如下:使用jQuery添加從Doctype開始到iframe的完整HTML
$(document).ready(function(){
var globalCount = 0;
function countInputs(data, url){
var unparsedHTML = data.html; // get data from json object which is in htmlentities
var iframeCreate = $('<iframe id="iframe"></iframe>');
var iframe = $('#iframe');
if(iframe.length){
iframe.remove(); // if iframe exists remove it to clean it
iframeCreate.insertAfter($('#result')); //create iframe
}else{
iframeCreate.insertAfter($('#result')); //create iframe
}
iframe.html(unparsedHTML).text(); // insert html in iframe using html(text).text() to decode htmlentities as seen in some stackoverflow examples
var inputs = iframe.contents().find('input'); //find inputs on iframe
var count = inputs.length;
var output = '';
globalCount = globalCount + count;
output = "Count for url: " + url + " is: " + count + " , the global count is: " + globalCount;
console.log(output);
$('#result').append(output);
}
/*SNIP ----- SNIP */
function getPage(urls){
console.log("getPage");
for(i = 0; i < urls.length; i++){
var u = urls[i];
console.log("new request: " + urls[i]);
var xhr = $.ajax(
{
url: "xDomain.php",
type: "GET",
dataType: "json",
data: {
"url":u
}
})
xhr.done(function(data){
console.log("Done, starting next function");
countInputs(data, u)
});
xhr.fail(function (jqXHR, textStatus, errorThrown) {
if (typeof console == 'object' && typeof console.log == 'function') {
console.log(jqXHR);
console.log(textStatus);
console.log(errorThrown);
}
});
}
}
/*SNIP------------SNIP*/
});
的問題是,沒有什麼是以往任何時候都加載到iframe中,不會引發錯誤,並請求成功使HTML的響應。例如,如果我將URL http://google.com提供給腳本,它應該返回N個輸入計數。因爲如果您訪問Google並輸入網址javascript: alert(document.getElementsByTagName('input').length)
將會提示N個輸入,因爲有N個輸入。我希望用例子提供的一切都更清楚。
我也會嘗試這個答案,關於「追加我的iframeCreate」不會將jQuery的insertAfter函數作爲append('iframeCreate.insertAfter($('#result')); //創建iframe')?我是否需要創建一個div並將iframe附加到該div,或者通過追加來表達什麼意思? – 2013-04-24 18:31:12
噢,你是完全正確的 – 2013-04-26 01:23:06