DOM包含页面更新后的旧元素

时间:2014-08-26 02:08:57

标签: javascript jquery dom google-chrome-extension

我正在使用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。除非建议的解决方案是最好的解决方案,否则仍在寻找一个好的解决方法。

1 个答案:

答案 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

上查看jQuery-ajax-settings