javascript - 如何从 Chrome 扩展程序中检查 HTML 元素是否可内容

标签 javascript html css google-chrome-extension contenteditable

我正在编写一个 Chrome 扩展,它需要在我的上下文脚本所在的页面上检测 contenteditable HTML 元素(或用户可以输入的元素)注入(inject)。

我目前正在这样做:

var objAll = document.getElementsByTagName("*");
for(var i = 0; i < objAll.length; i++)
{
    obj = objAll[i];

    if(obj.contentEditable &&
        obj.contentEditable != 'inherit' &&
        obj.contentEditable != 'false')
    {
        //Yes, this is a content editable element!
    }
}

但我的方法似乎并不适用于我测试过的所有网站。

我很好奇,我在那里错过了什么?

附言。因为它是一个内容脚本,所以我没有使用 jQuery 来使其更健壮。

最佳答案

contentEditablecontenteditable 属性隐含的属性。您真正需要检查的是 isContentEditable 属性,它是一个 bool 值,指示元素是否具有可编辑的内容:

if (obj.isContentEditable) {
    // do stuff
}

但不是获取所有元素并过滤它们,而是选择所有 contenteditable 元素:

var contEditables = document.querySelectorAll('[contenteditable]');
for (var i = 0; i < contEditables.length; i++) {
    // do stuff
}

事实上,一个元素具有可编辑的内容当且仅当它具有contenteditable 属性时,无论是否为空字符串。

Live demo

关于javascript - 如何从 Chrome 扩展程序中检查 HTML 元素是否可内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25759735/

相关文章:

java - 使用java连接到站点和POST,HTTP状态代码200

html - 旋转和位置 :absolute (IE8 and lower)

javascript - 使用花括号在 Internet Explorer 上的 AngularJS 数据绑定(bind)问题

javascript - 在 HTML 中正确实现 CSS 和 JS

HTML 元素没有正确地垂直对齐到中间

javascript - 单击 href 链接时如何将查询字符串参数添加到同一 URL

javascript - 无限旋转木马,放大效果极佳

css - 将 WinLess 与 Bootstrap 3.3.7 结合使用

javascript - 标签颜色谷歌饼图

javascript - 除了需要输入的标签之外,如何显示 (*) ..?