我有一个javascript:
书签,代码为
javascript:document.body.contentEditable = !document.body.contentEditable;
应该打开和关闭"编辑器"对于页面(只是为了朋友的恶作剧等)。但它没有实现预期的结果,当我点击书签时没有任何反应。打开Javascript控制台,我看到:
document.body.contentEditable
"false"
!document.body.contentEditable
false
之前,我使用了javascript:document.body.contentEditable = true;
,这使得页面可以编辑,但我无法将其关闭。
答案 0 :(得分:9)
就像您在JavaScript控制台中注意到的那样,document.body.contentEditable
是一个字符串,而不是一个布尔值。你可以这样做:
document.body.contentEditable = !(document.body.contentEditable == "true");
或只是
document.body.contentEditable = document.body.contentEditable != "true";
HTMLElement.contentEditable属性用于指示是否 该元素是否可编辑。这个枚举属性可以有 以下值:
- “true”表示该元素是可以满足的。
- “false”表示无法编辑该元素。
- “inherit”表示该元素继承其父级的可编辑状态。
https://developer.mozilla.org/en/docs/Web/API/HTMLElement/contentEditable
答案 1 :(得分:1)
document.body.contentEditable
是一个字符串值,JavaScript认为非空字符串是真的。
!"" == true
!"a" == false
答案 2 :(得分:0)
contentEditable
的值是一个字符串,而不是布尔值。它可以包含值"true"
,"false"
或"inherit"
(因此它不能是简单的布尔值)。布尔反转不起作用。您需要明确指定这三个字符串中的一个。
答案 3 :(得分:0)
contentEditable是文本输入吗?所以你需要将texto解析为boolean:
javascript:document.body.contentEditable = !JSON.parse(document.body.contentEditable);
答案 4 :(得分:0)
document.body.contentEditable = true;
!document.body.contentEditable;
但这不正确。
最后,我决定使用实际上是布尔值isContentEditable
的属性,如下所示:
document.body.contentEditable = !document.body.isContentEditable;