javascript – 如何在Chrome扩展程序中控制(i)注入内容脚本的帧深度?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – 如何在Chrome扩展程序中控制(i)注入内容脚本的帧深度?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1579字,纯文字阅读大概需要3分钟。
内容图文
为Chrome扩展程序创建清单文件时,有一个选项all_frames,允许将内容脚本注入顶部框架/ iframe,或者全部注入.
我希望此行为停止在某个特定级别(例如,2).有没有办法指定它,最好是在清单上?或者至少在实际脚本中有黑客攻击?
问题可能被翻译为:“是否可以知道HTML文档中的框架有多深?
解决方法:
您无法在清单中指定帧深度.
但是,如果iframe具有不同的URL,则可以针对它们运行不同的内容脚本(通过在manifest_scripts数组中的清单中有多个条目).
内容脚本可以使用以下代码以编程方式确定(i)帧的深度:
getFrameDepth (window.self);
function getFrameDepth (winToID) {
if (winToID === window.top) {
return 0;
}
else if (winToID.parent === window.top) {
return 1;
}
return 1 + getFrameDepth (winToID.parent);
}
如果您按如下方式创建扩展,则可以针对this page at jsBin对此进行测试:
manifest.json的:
{
"manifest_version": 2,
"content_scripts": [ {
"all_frames": true,
"js": [ "iframe foo.js" ],
"matches": [ "http://jsbin.com/enivux/*",
"http://jsbin.com/anomic/*",
"http://jsbin.com/ogaxoq/*",
"http://jsbin.com/ihegaq/*"
]
} ],
"description": "Detecting where an iframe is in the hierarchy",
"name": "(i)frame Level identification",
"version": " 1"
}
iframe foo.js:
var frameDepth = getFrameDepth (window.self);
var bodyColors = ["white", "pink", "lime", "cyan"]
document.body.style.background = bodyColors[frameDepth];
function getFrameDepth (winToID) {
if (winToID === window.top) {
return 0;
}
else if (winToID.parent === window.top) {
return 1;
}
return 1 + getFrameDepth (winToID.parent);
}
请注意,Chrome扩展程序目前为only run on iframes with a src attribute,并且仅当URL符合清单的匹配和glob要求时.
内容总结
以上是互联网集市为您收集整理的javascript – 如何在Chrome扩展程序中控制(i)注入内容脚本的帧深度?全部内容,希望文章能够帮你解决javascript – 如何在Chrome扩展程序中控制(i)注入内容脚本的帧深度?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。