【发布时间】:2016-06-19 03:52:52
【问题描述】:
我可以使用开源(客户端)来扩展 HTML, 例如我需要向它添加脚本或更改一些 src 值并添加额外的标签等。
我发现了以下内容:https://www.npmjs.com/package/gulp-html-extend
但我不确定我是否可以在 client 中使用它(我们在项目中不使用 gulp)我的意思是例如在 jsFiddle。
输入应该是带有新内容的对象/json 的 HTML 内容,输出应该是扩展的 HTML。
如果没有开源,而我需要自己开发,是否有一些我应该从好的设计方面遵循的指导方针?
更新:
例如,如果我将以下 HTML 文档作为 JS 输入变量
这是我得到的字符串输入
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta charset="UTF-8">
<title>td</title>
<script id="test-ui-bootstrap"
src="resources/test-ui-core.js"
data-test-ui-libs="test.m"
data-test-ui-xx-bindingSyntax="complex"
data-test-ui-resourceroots='{"tdrun": "./"}'>
</script>
<link rel="stylesheet" type="text/css" href="css/style.css">
<script>
test.ui.get().attachInit(function() {
});
</script>
</head>
<body class="testUiBody" id="content">
</body>
</html>
例如,我需要以下内容:
1.
我想在
之后添加额外的脚本(例如,内部带有警报)<script id="test-ui-bootstrap" ....
如果文件中存在id为"test-ui-bootstrap"
的脚本我想在这个脚本之后立即添加另一个脚本,例如
script with alert inside
2.
在最后一个脚本之后的第一个脚本(id id="test-ui-bootstrap")中添加其他属性...
data-test-ui-libs="test.m"
添加
data-test-ui-libs123 ="test.bbb"
3.
如果我想修改现有属性的值,例如改变
src="resources/test-ui-core.js"
到
src="resources/aaaa/test-ui-core.js"
我得到了带有 HTML 的字符串,我需要用修改后的 HTML 创建新字符串我可以用好的方法来做吗?
更新 2
这是 HTML 更改后的输出
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta charset="UTF-8">
<title>td</title>
<script id="test-ui-bootstrap"
src="resources/aaaa/test-ui-core.js"
data-test-ui-libs="test.m"
data-test-ui-libs123 ="test.bbb"
data-test-ui-xx-bindingSyntax="complex"
data-test-ui-resourceroots='{"tdrun": "./"}'>
</script>
<script>
alert("test)
</script>
<link rel="stylesheet" type="text/css" href="css/style.css">
<script>
test.ui.get().attachInit(function() {
});
</script>
</head>
<body class="testUiBody" id="content">
</body>
</html>
【问题讨论】:
-
你能把你的问题分解成一个你喜欢做什么的最小例子吗,因为到目前为止它对我来说只是正常的 html 编辑(源代码视图?)。无论如何,我认为现在的问题也很广泛,无法给出一个好的答案
-
@Icepickle - 请查看我的更新,可以吗?
-
是的,所以您想解析文本并将其扩展为特定点?当它在浏览器中实时运行时,它不是什么东西,它只是对文本输入的操作?我不确定第二点,如果您将相同的数据名称添加到脚本元素,浏览器引擎现在真的不会如何处理,也许您想扩展操作原始标签?
-
@Icepickle - 是的,这就是我想要的……不,它没有实时运行……抱歉,第二点我需要更改/添加密钥(我会更新我的帖子)谢谢!
-
我认为您需要的是 DOMParser,请参阅developer.mozilla.org/en-US/docs/Web/API/DOMParser。您可以使用 DOM API 对其进行更新。
标签: javascript jquery html html-parsing html-parser