js 如何获取一个后插入的标签

2018-01-22 13:03:41 +08:00
 Tassel

是这样的,我想拿到一个页面完成才插入的标签,这样的 我想去拿到 video 标签,对前端不是太熟,所以来问一下

2140 次点击
所在节点    问与答
10 条回复
qsnow6
2018-01-22 13:09:36 +08:00
xpath
jason19659
2018-01-22 13:38:17 +08:00
你的 js 在它之后加载直接拿
Tassel
2018-01-22 13:41:34 +08:00
@jason19659 他是在 iframe 那个 src 里面执行里面 js 脚本之后插入的 直接好像还是取不到
autoxbc
2018-01-22 13:50:00 +08:00
js 是事件驱动的,你的所有代码应该放在对应的事件处理中,这样可以保证高效

在这个例子里,插入标签会触发 dom 结构变化,可以用突变观察者处理
http://javascript.ruanyifeng.com/dom/mutationobserver.html

如果觉得上面的观察者比较复杂,可以用事件监听,捕获节点插入事件
https://developer.mozilla.org/zh-CN/docs/Web/API/EventTarget/addEventListener
lijsh
2018-01-22 14:17:48 +08:00
@Tassel #3 搜搜 iframe onload
oott123
2018-01-22 14:46:13 +08:00
1. 你是浏览器插件,还是普通的网页上的 js 脚本?插件->A,网页->转 2
2. 如果是普通的 js 脚本,iframe 和你是同域还是跨域?同域->A 或 B,跨域->转 3
3. iframe 内部页面,是受你控制还是不受你控制?受控->B,不受控->C

A. 用 onload 事件,也许需要配合 MutationObserver
B. 用 postMessage 发送加载完成的事件,并在外面 postMessage 需要进行的操作回里面执行
C. 洗洗睡吧
Tassel
2018-01-22 15:30:11 +08:00
@oott123 应该是 C 吧 我是目的就是相当于解析一个网页,拿到 video 的播放地址,看来只能洗洗睡了吧 谢谢了
Tassel
2018-01-22 15:35:43 +08:00
@autoxbc 我想做的就是网页加载完成,在外部通过调取 js 方法获取标签这样的,主要解析这个 video 标签
awanabe
2018-01-22 15:44:08 +08:00
document.getElementById('#frameId').contentDocument.getElementsByTagName('video');

试试
beastk
2018-01-22 18:12:28 +08:00
跨域了吧

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/424884

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX