不要加载附加了 innerHTML 的脚本
Don't load scripts appended with innerHTML?
我正在将整个HTML页面附加到div
(抓取)。如何阻止它请求script
和css
文件?我尝试立即删除这些节点,但仍然要求它们。
这是为了浏览器插件,我正在用JS抓取
正如
@adeneo所写的,您不必将html添加到页面中以便从中抓取信息,您可以将其转换为与页面断开连接的DOM树DOM并在那里进行处理。
在jQuery中,它是简单的$("html text here")
。 然后你可以使用 API 抓取它,
例如。
function scrape_html(html_string) {
var $dom = $(html_string);
var name = $dom.find('.name').text();
return name;
}
没有jQuery:
function scrape_html(html_string) {
var container = document.createElement('div');
container.innerHTML = html_string;
var name = container.getElementsByClassName('name')[0].innerText;
return name;
}
设置尚未添加到文档中的临时 HTML 元素的 innerHTML 不会执行脚本,并且由于它不属于您的文档,因此也不会应用样式。
这将使您有机会在将 innerHTML 复制到您自己的文档之前去除任何不需要的元素。
例:
var temp = document.createElement('div');
temp.innerHTML = html; // the HTML of the 'other' page.
function removeElements(element, tagName)
{
var elements = temp.getElementsByTagName(tagName);
while(elements.length > 0)
{
elements[0].parentNode.removeChild(elements[0]);
}
}
removeElements(temp, 'script');
removeElements(temp, 'style');
removeElements(temp, 'link');
container.innerHTML = temp.innerHTML;
相关文章:
- 如何逃离<脚本>jquery html()中的标记.我使用了innerHTML和outerHTML来解决这个
- 未捕获的类型错误:无法设置属性'innerHTML'如果为null,则将脚本移动到正文不会;不起作用
- 通过innerHTML注入脚本:函数与全局
- 使用内部脚本设置innerHTML
- 包括一个带有innerHTML转义字符的脚本
- 将text.innerHTML修改为显示/隐藏脚本中的图像
- 确定元素是否由 JS 添加,还是原始 HTML 文档 *OR* 检测脚本何时通过 InnerHTML 更新节点
- 防止使用 innerHTML 进行脚本注入
- 不要加载附加了 innerHTML 的脚本
- 如何使用 innerHTML 运行添加到页面的脚本
- 在 innerHTML 中执行脚本标记以执行 Ajax 调用
- 为什么我的onclick脚本没有改变我的innerhtml
- innerHTML在正文中插入脚本(用于ZeroClipboard)不起作用
- 如何访问innerHTML但忽略<脚本>标签
- 未捕获的类型错误:无法调用方法'innerHTML'即使当我将脚本代码放在<身体>标签
- 脚本修改主体.innerHTML from body -有时IE8中止,有时不
- 注入了innerHTML的脚本不会触发onload和onerror
- 脚本执行- innerHTML, jQuery html()
- 从脚本编辑表的innerHTML
- 如何使用java脚本将innerhtml保存为文本文件,html文件保存在某些文件夹中