我已经草拟了一种用于客户端脚本的新编程语言。我熟悉如何构建一种语言,以及其中的大部分工作。我准备进行一个长期项目,但对如何将其实现到 HTML 文件中有一些疑问。我想在 HTML 中实现类似 <script> 标签的东西,我找到了一些解释如何向 HTML 添加新标签的链接。我认为开发人员必须使用 HTML 文件头部的语言解析器(它实际上不仅仅是一个解析器,但除此之外)连接到一个 js 文件,如下所示:<script src="my-lang.js"></script>
.以下是我找到的一些链接:
https://blog.teamtreehouse.com/create-custom-html-elements-2
https://developers.google.com/web/fundamentals/web-components/customelements
这里是我的一些问题,假设我想在
- 如何防止浏览器的 HTML 解析器将
标记中的内容误解为 HTML 代码?据我所见,使用我的语言编写的所有代码都会在网站上显示为纯文本。 - 如何将我的解析器实现到 JS 文件中?我不是在问如何解析自定义语言,而是在问放在哪里。第一个链接提到了
createdCallback()
使用标签时调用的函数。假设以后没有人使用 JavaScript 添加 标签(对于这种语言来说这毫无意义),只要使用自定义标签,就应该调用回调。 - 要解析我的语言,我应该访问自定义标签的 innerHTML 属性吗?我不知道通过解析时间标签是否甚至具有该属性,或者我是否必须添加该属性,因为我不熟悉它的这一部分是如何工作的。
感谢您容忍我的愚蠢问题。我喜欢深入研究这些东西,尽管我对这部分脚本编写还很陌生。基本上,这就是我想要的代码:
<!DOCTYPE html>
<html>
<head><script src="my-lang.js"></script></head>
<my-language>
//do some stuff in my language, like DOM editing.
//Just a replacement for JavaScript basically that doesn't serve much purpose.
</my-language>
</html>
如有任何建议,我们将不胜感激。提前致谢!
最佳答案
与其在 HTML 中使用新的非标准标记,我建议考虑使用 <script>
标签。虽然<script>
标签经常用于 Javascript,但情况并非总是如此。例如,服务器发送数据供客户端 JS 解析的一种可能技术是将 JSON 放在像 <script type="application/json">{"foo":"bar"}</script>
这样的标记中。 .类型不是 type="javascript"
的脚本不会尝试将其解析为 Javascript,但可以使用 Javascript 检索标记内的数据。您可以通过选择标签然后访问其 textContent
来做到这一点属性(property)。 (innerHTML
属性可能仅在您有意要检索 HTML 标记时才适用 - 否则,最好使用 textContent
)
您可以使用几乎相同的技术,但不是 JSON.parse
正在处理 <script>
的内容标记,通过您的解析器发送它。
例如:
const tag = document.querySelector('script[type="myNewLanguage"]');
const scriptText = tag.textContent;
// use your parser to parse scriptText
scriptText.split('\n').forEach(line => {
console.log(line);
});
<script type="myNewLanguage">foo
bar
baz</script>
关于javascript - HTML 中的新标记和解析器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53859329/