だから私がやっていることは、file_get_contents
HTML を取得して UTF-8 形式の htmlentities に変換するだけの超シンプルな PHP プロキシを使用することです。その後、AJAX呼び出しを行っているjQueryを使用して、タグを含むHTML全体を<html><head><body>code..</body></head></html>
iframeに取得したいので、入力を検索してjQueryでトラバースできます。これを行う方法はありますか?それが歓迎される他の方法で実行できる場合、私はそれが最良の選択肢であると考えたので、iframe を実行しています。これはdoctypeとすべてを含む完全なHTMLドキュメントであるため、divに追加してトラバースすることはできないと思います。私のjQueryコードは次のとおりです。
$(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にアクセスしてURLjavascript: alert(document.getElementsByTagName('input').length)
を入力すると、N個の入力があるため、N個の入力が警告されます。提供された例ですべてがより明確になることを願っています。