DOM在页面更新后包含旧元素
DOM contains old element after page update
我正在开发Chrome扩展(这个问题不需要任何知识…),当我访问某个域的页面时,我会运行一个脚本。所要做的就是从页面中的<meta>
标签获取attribute
值:
$('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
。仍在寻找一个好的解决方案,除非提出的解决方案是最好的。
编辑、更新
尝试
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(利用jquery的javascript)
// 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设置
相关文章:
- 查找数组javascript中包含的元素类型
- 将包含SVG元素的HTML转换为图像文件
- 使用 Chai - 如何检查对象属性是否包含 DOM 元素
- 创建包含有限元素的列表
- 更改包含其他元素的元素的文本
- Angularjs:如何检查元素的子元素是否包含某些元素(通过ID)
- 如何在element.select的结果中包含当前元素
- 如何使用自定义角度指令包含子元素
- 如何同步包含克隆元素的jquery可排序列表
- 正在Jquery中的列表中不包含任何元素的列表中删除
- 获取/更改包含其他元素的元素的类.JavaScript/JQuery
- 从页面中删除除数组中包含的元素及其父元素/子元素之外的所有元素
- 更新时未从 D3 条形图中删除旧元素
- Javascript对象保留包含旧数据
- 使用 jQuery 选择不包含的
元素(具有选择性切换的最终目标)
- 在包含许多元素的页面中首选 id 属性或数据属性
- 主干 - 实例化视图包含旧数据
- 在 PHP 中打印包含 SVG 元素的 JSON 数组
- 如何获取对已单击的旧元素的引用,以便可以运行反向动画
- DOM在页面更新后包含旧元素