假设我在HTML文档中有几个脚本节点,我如何选择包含特定源值的所有脚本节点:
<head>
</head>
<body>
<script type="text/javascript">
blah();
</script>
</body>
仅选择包含函数blah
的正文中的脚本节点的正确方法是什么?
我试过了 //script[contains(text(), 'blah')]
,但它没有用。
答案 0 :(得分:1)
// script [contains(。,'blah')应该有效 和...之间的不同 。和text()是可以有多个文本节点(理论上),text()匹配所有文本节点的序列。
另一种可能性是你有XHTML,你需要将XHTML命名空间绑定到前缀,例如“h”,并且说,// h:script [contains(。,'blah')],以及如何做到这一点取决于确切的调用环境,例如: registerNamespace()或其他东西。您需要在文档中注册xmlns =“....”中的相同URI,很可能是http://www.w3.org/1999/xhtml,例如如果你在.net:
中使用XmlDocument,就像这样System.Xml.XmlNamespaceManager xmlnsManager =
new System.Xml.XmlNamespaceManager(xmldoc.NameTable);
xmlnsManager.AddNamespace("h", "http://www.w3.org/1999/xhtml", xmlnsManager);
result = xmldoc.SelectNodes('//h:script[contains(., 'blah')]')
答案 1 :(得分:0)
使用javascript搜索功能迭代每个脚本元素怎么样?
http://www.w3schools.com/jsref/jsref_search.asp
<script type="text/javascript">
var s = document.getElementsByTagName('script');
for (var i = 0; i < s.length; i++) {
var src = s[i].innerText;
var result = src.search("blah()");
if (result != -1) {
console.log(src);
}
}
</script>
脚本应该进入页面加载逻辑,以处理在此之后发生的所有脚本元素。