【发布时间】:2016-07-01 04:28:44
【问题描述】:
这是我将在这个问题中使用的简单表格...
<form method="get">
<input type="text" value="test">
</form>
在这里或在 jsfiddle 上运行良好。请注意,如果您单击“运行代码 sn-p”并单击该字段,那么文本将如何与光标一起保留在该字段中?
但是,在我的自定义 WordPress 网站上,该字段的值的行为类似于 占位符 值。希望这些图片能说明我的意思。
您可以从上面的 HTML 表单中看到,该字段已分配了一个值,并且 没有 有一个占位符。我的第一个想法是必须在运行时通过 javascript 动态分配一些占位符值。但是,Safari 的网络检查器显示了这一点……
看起来它不是占位符,而是添加了一些 Shadow DOM 代码,并且新代码使其功能类似于占位符。为了查看 Shadow DOM 代码,我在 Chrome 的网络检查器中启用了 Shadow DOM。这是我发现的。
当我单击该字段以突出显示它时,Shadow DOM 会显示...
似乎有些东西正在创建一个影子根并将这个 div 添加到它...
<div id="inner-editor"></div>
然后它会根据高亮状态将该 div 的 innerHTML 设置为 "" 或 "test"。
我不经常使用 Shadow DOM,而且我不确定如何确定这段代码的来源。我已经通过网络检查器搜索了我的整个代码库,并从我的项目的根目录中执行了几个不同的递归 grep(例如 grep -r "inner-editor" *),以尝试在 css、javascript 或 php 中找到任何代码可能会在运行时添加此 Shadow DOM 代码。在我的项目中的任何地方都没有“createShadowRoot”或“inner-editor”或“parent-focus”或“parent-active”或“text-active”的实例。我不确定这些可能来自浏览器代码本身,还是来自我正在使用的某个 js 库(如 jQuery)中的一些混淆代码,或者是对某些库代码的动态浏览器重写。
如何让这个文本字段在我的网站上正常运行,而不是像一个带有占位符值的空文本字段?
感谢您抽出宝贵时间。
【问题讨论】:
-
我宁愿怀疑您网站上的某些脚本/插件负责 - 一些“增强”文本区域/文本输入字段或 sh 的编辑器功能的东西。可能是这样……?
-
“似乎有些东西正在创建影子根” 您是否检查了在文档中加载的
js?html中是否有template或content元素?可以创建一个jsfiddlejsfiddle.net来复现、演示吗? -
“我不确定这些是来自浏览器代码本身还是来自我正在使用的某个 js 库中的一些混淆代码”你在用吗?
-
我已将它隔离到我的主题的 jquery.main.js 文件中。里面有什么东西导致了这个。发现问题我会回复的。
标签: javascript jquery html dom shadow-dom