簡體   English   中英

從XMLHttpResponse獲取innerHTML

[英]Get innerHTML from XMLHttpResponse

我正在嘗試編寫一個chrome擴展名,該擴展名將從當前頁面獲取一個值,然后使用該信息轉到另一個頁面並從html響應中提取特定元素。 我可以很好地處理html響應,但無法解析html響應以獲取特定元素。

content.js

function getTicketInfo(){
    var ticketURI = document.getElementById("p3_lkid").value;
    var ticketNumber = document.getElementById("p3_lkold").value;

    var xhr = new XMLHttpRequest();
    xhr.open('GET',"remotePage.html",true);
    xhr.onreadystatechange = function(){
        if(xhr.readyState == 4 && xhr.status == 200){
            function handleResponse(xhr)
        }
    }

    xhr.send();
}

function handleResponse(xhr){
    var contactElement = xhr.getElementById("CF00N80000005MAX6_ileinner");
    alert(contactElement.clildNodes[0].nodeValue);
}

remotePage.html

<html>
    <div id="CF00N80000005MAX6_ileinner">
        <a href="/0033400001pt8Ox" id="lookup0033400001pt8Ox00N80000005MAX6">Text I need!</a>
    </div>
</html>

如何從外部頁面獲取此值? 是否有更好的方法來請求此信息?

您的XHR響應是一個字符串,而不是DOM。 使用jQuery,您將能夠將其轉換為DOM並進行查詢。

function handleResponse(xhr){
    $(xhr.response).find('#CF00N80000005MAX6_ileinner')
}

這就像不解析對DOM對象的HTML響應一樣簡單。 根據MDN,這是解析XML(或HTML以及Vanilla JavaScript)的方法:

var parser = new DOMParser();

var doc = parser.parseFromString(xhr, "text/xml");

然后使用新的DOM Object doc訪問元素。

var contactElement = doc.getElementById("CF00N80000005MAX6_ileinner");
alert(contactElement.childNodes[0].nodeValue);

我還注意到您將childNodes拼寫錯誤,但這不是主要問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM