我正在使用Chrome扩展程序(此问题不需要知识......),当我访问具有特定域的网页时,我有一个已运行的脚本。一切都是从页面中的attribute
标记获取<meta>
值:
$('meta[itemprop=contentURL]').attr('content')
这在第一页加载时工作正常。但是,位于页面内的还有相关内容的链接。如果我点击其中一个相关链接,Chrome微调器会旋转一下,加载新内容,并更新地址栏中的URL。
但是,如果我尝试上面的jQuery,我会得到旧的属性值,而不是新页面上的新属性值。使用Chrome的Inspect Element
后,我看到旧属性值已存在,但如果我使用view page source
,那么新属性就在那里。
所以似乎DOM已经老了......有没有一种很好的方法来获得更新的DOM?这个问题伴随着DOM vs Page Source are different
线索的所有其他问题,我已经看过但没有得到任何答案。
有没有一种方法可以获得具有更新属性的新DOM?感谢。
编辑:这是Chrome扩展程序代码的样子:
chrome.webNavigation.onHistoryStateUpdated.addListener(function(details) {
// request current page , `cache:false`
$.ajax({url:window.location.href, cache:false})
.done(function(data) {
var content = $(data).filter("meta[itemprop=contentURL]").attr("content");
console.log(content);
});
});
以上代码记录undefined
。除非建议的解决方案是最好的解决方案,否则仍在寻找一个好的解决方法。
答案 0 :(得分:0)
修改,更新
尝试
v2(javascript)
function done() {
var div = document.createElement("div");
var content = this.responseText;
div.innerHTML = content;
content = div.querySelectorAll("meta[itemprop*=contentURL]")[0].content;
console.log(content);
}
var request = new XMLHttpRequest();
request.onload = done;
request.open("GET", window.location.href + "?=" + (new Date().getTime()), false);
request.send();
v1(javascript利用jquery)
// request current page , `cache:false`
$.ajax({url:window.location.href, cache:false})
.done(function(data) {
var content = $(data).filter("meta[itemprop=contentURL]").attr("content");
console.log(content);
});
在cache