将包含非法字符 @ 的属性添加到 DOM
Adding attribute containing an illegal character @ to DOM
上下文
我想使用 javascript 重新渲染一些现有的 HTML。服务器端不在我的控制之下,我无法对正在处理的 HTML 文档应用任何更改,我必须完全在客户端工作。
我想利用 vue 功能,使用 petite-vue
。为此,我计划操纵 DOM 并将 vue 指令添加到准备脚本中的 DOM 节点。该脚本完成后,我想安装 vue
应用程序。
问题
此方法的一个问题是某些 vue
指令包含非法字符。比如在某个元素上,我想设置一个属性Attr("@vue:mounted", "mounted()")
。这会引发 DOMException
,因为 @vue:mounted
is not a valid XML-Name(由于起始 @
)这是 DOM 属性名称的要求。
如何设置此属性以便 vue
接受它?我认为 vue
以某种方式解决了非法字符,因为它以某种方式设法读取了属性。但是我不熟悉 vue
的内部结构。也许还有一种方法可以在不了解 vue
的内部实现我想要的东西,但我也不知道该怎么做。
在 Vue 中,@
字符(在模板中)只是 v-on:
的 shorthand。而作为petit-vueshould be compatible这方面,你可以尝试用Attr("v-on:vue:mounted", "mounted()")
代替...
上下文
我想使用 javascript 重新渲染一些现有的 HTML。服务器端不在我的控制之下,我无法对正在处理的 HTML 文档应用任何更改,我必须完全在客户端工作。
我想利用 vue 功能,使用 petite-vue
。为此,我计划操纵 DOM 并将 vue 指令添加到准备脚本中的 DOM 节点。该脚本完成后,我想安装 vue
应用程序。
问题
此方法的一个问题是某些 vue
指令包含非法字符。比如在某个元素上,我想设置一个属性Attr("@vue:mounted", "mounted()")
。这会引发 DOMException
,因为 @vue:mounted
is not a valid XML-Name(由于起始 @
)这是 DOM 属性名称的要求。
如何设置此属性以便 vue
接受它?我认为 vue
以某种方式解决了非法字符,因为它以某种方式设法读取了属性。但是我不熟悉 vue
的内部结构。也许还有一种方法可以在不了解 vue
的内部实现我想要的东西,但我也不知道该怎么做。
在 Vue 中,@
字符(在模板中)只是 v-on:
的 shorthand。而作为petit-vueshould be compatible这方面,你可以尝试用Attr("v-on:vue:mounted", "mounted()")
代替...