- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的目标是在将片段插入 dom 之前从文档片段中删除所有 <[script]> 节点(保留片段的其余部分完好无损)。
我的片段是由以下内容创建的,看起来像这样:
range = document.createRange();
range.selectNode(document.getElementsByTagName("body").item(0));
documentFragment = range.cloneContents();
sasDom.insertBefore(documentFragment, credit);
document.body.appendChild(documentFragment);
我在另一篇文章中得到了很好的范围步行者建议,但意识到我问了错误的问题。我得到了关于范围的答案,但我想问的是文档片段(或者也许有一种方法可以设置片段的范围? hrmmm)。提供的步行器是:
function actOnElementsInRange(range, func) {
function isContainedInRange(el, range) {
var elRange = range.cloneRange();
elRange.selectNode(el);
return range.compareBoundaryPoints(Range.START_TO_START, elRange) <= 0
&& range.compareBoundaryPoints(Range.END_TO_END, elRange) >= 0;
}
var rangeStartElement = range.startContainer;
if (rangeStartElement.nodeType == 3) {
rangeStartElement = rangeStartElement.parentNode;
}
var rangeEndElement = range.endContainer;
if (rangeEndElement.nodeType == 3) {
rangeEndElement = rangeEndElement.parentNode;
}
var isInRange = function(el) {
return (el === rangeStartElement || el === rangeEndElement ||
isContainedInRange(el, range))
? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP;
};
var container = range.commonAncestorContainer;
if (container.nodeType != 1) {
container = container.parentNode;
}
var walker = document.createTreeWalker(document,
NodeFilter.SHOW_ELEMENT, isInRange, false);
while (walker.nextNode()) {
func(walker.currentNode);
}
}
actOnElementsInRange(range, function(el) {
el.removeAttribute("id");
});
该步行器代码取自:Remove All id Attributes from nodes in a Range of Fragment
请没有库(即 jQuery)。我想以原始方式做到这一点。预先感谢您的帮助
最佳答案
收集所有内容的最简单方法<script>
节点将使用 getElementsByTagName
,但不幸的是,这并没有在 DocumentFragment
上实现.
但是,您可以创建一个临时容器并 append 片段中的所有元素,然后遍历并删除所有 <script>
元素,像这样:
var temp = document.createElement('div');
while (documentFragment.firstChild)
temp.appendChild(documentFragment.firstChild);
var scripts = temp.getElementsByTagName('script');
var length = scripts.length;
while (length--)
scripts[length].parentNode.removeChild(scripts[length]);
// Add elements back to fragment:
while (temp.firstChild)
documentFragment.appendChild(temp.firstChild);
关于javascript - 从文档片段中删除所有带有 (nodeName = "script") 的节点 *在将其放入 dom* 之前,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2694279/
我想提取 html 页面正文的内容及其子页面的 tagNames。我已经采用了这样的示例 html: This is H1 tag This is H2 tag This is H3 tag
我正在从 jquery api 网站查看这段代码,但我不明白它是如何工作的 我只是不明白这部分是如何工作的 [0].nodeName,0 是做什么的? $( "" ).html( $(
我有以下代码: $(document).ready ( function () { $.validator.addMethod( "lessThan",
这个问题已经有答案了: Uncaught TypeError: elem.nodeName.toLowerCase is not a function Jquery (2 个回答) 已关闭 4 年前。
我想创建一个模板,例如 {{ text }} 并绑定(bind)数据 { headerType: 'h3', // or h1, h2... text: 'Header text' } 生成的
我正在使用: 在我的 html 中,然后让 jquery 做: $("#nodeName").html("someString"); 然后,控制台显示: Uncaught TypeError: Ob
a.nodeName is undefined 我查过这个,但对我来说解释似乎一点都不清楚。 function deleteThisRow() { $(this).closest('tr').
import React, { Component } from 'react'; import { json } from 'd3-request'; import { rgb } from 'd3
我绞尽脑汁,查看了示例,但不明白为什么 firebug 会抛出“e.nodeName is undefined”错误。 这可能是一些愚蠢的小支架不合适的东西,或者需要第二双眼睛才能看到的东西.. 我只
我正在尝试使用交换来根据屏幕尺寸更改图像。 但是,当初始化交换时,不会加载图像。然后,当我调整浏览器大小(1024px 及更低)时,我在控制台中收到一条错误消息: Uncaught TypeError
如何将页面 @nodename 的链接添加为表单上的文本输入值?输入将被禁用,因此用户无法更改文本。 最佳答案 我猜这是 Razor ?尝试使用 @Model.Name 代替。 关于javascri
$('this')[0].nodeName 和 $('this')[0].tagName 有什么区别? 最佳答案 tagName property专门用于元素节点(类型 1 节点)以获取元素的类型。
在 Jython WebSphere Wsadmin 中: 看来我可以从 nodeName 获取服务器的名称,但是我还没有设法找到一种直接的方法来查找服务器的 nodeName。 我想过创建所有节点的
此问题仅出现在 joomla 中 - 我正在尝试在我的 joomla 网站上使用内容流插件 这是插件站点 - http://www.jacksasylum.eu/ContentFlow/ 这是我的网站
在这个 xpath 中: /A/B[C='hello'] 是 C="hello" C[text()='hello'] 的某种语法快捷方式?它在任何地方都有记录吗? 编辑:好的,我发现了一个区别:C=返
我正在从 XMLHttpRequest 解析 XML 文件: var xhttp = new XMLHttpRequest(); xhttp.onreadystatechange = function
我是新来的,我在 ajax 自动完成方面遇到问题,我在 Firebug 中遇到此错误(在 Firefox 中): g.nodeName is undefined c=f.valHooks[g.type
目前,我正在修改注册页面以使用 Ajax/jQuery。它处于简单阶段,仅要求输入用户名和密码。 我想使用 jQuery 告诉用户用户名文本框中的当前条目是否无效或已被使用。如果满足任一条件,div
你可能看过我之前关于 jQuery 升级的主题。所以最后我们将jQUery从1.4.2升级到1.6.1,但我们遇到了以下问题: elem is undefinedif ( elem.nodeName
我的 laradock 项目遇到了麻烦:我已经下载并安装了 docker,并且我已经使用 laradock 成功完成了我的 laravel 项目的设置。我使用 php 7、laravel(5.5.14
我是一名优秀的程序员,十分优秀!