jsbin.com 上我的浏览器 JavaScript 引擎有什么问题?

What's wrong with my browser JavaScript engine on jsbin.com?

我是 JavaScript 的新手。我正在尝试将文本添加到 p 标记中并使用 ID 定位它。现在,使用 document.getElementById('text').innerHTML,当我设置包含 do 单词的文本时,它 returns p 标签中的原始文本。

document.getElementById('text').innerHTML='as I add??? do';
<p id="text" class="abc">Hello</p>

它只发生在 do 之间的单词。 Here's a GIF explaining the issue:

我希望我做对了。但是,可能有些怪癖困扰着我。

正如 Juhana 和 jsbin member 在 github 上评论的那样,它是一个 false positive,这可以通过在代码中添加 // noprotect 来实现。

例如

console.clear(); 
document.getElementById('abc').innerHTML = 'this is abc do '; 

// noprotect

p.s.目前正在解决环路保护问题,直到修复为止。

当你使用

document.getElementById("text").innerHTML = "abc a d";

他们载入此文档(由我格式化):

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width">
    <title>JS Bin</title>
    <style id="jsbin-css"></style>
  </head>
  <body>
    <p id="text">Hello</p>
    <script>
    try {
      document.getElementById("text").innerHTML = "abc a d";
    } catch (error) {
      throw error;
    }
    //# sourceURL=wecinoqeje.js
    </script>
  </body>
</html>

但是当您使用 do 时,它们会完全搞砸您的代码。

document.getElementById("text").innerHTML = "abc a do";

他们可能认为这是 do-while,因为他们有一个叫做 "loop protection" 的东西。加载的文档是

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width">
    <title>JS Bin</title>
    <style id="jsbin-css"></style>
  </head>
  <body>
    <p id="text">Hello</p>
    <script>
    try {
      {
        ;
        window.runnerWindow.protect.protect({
          line: 1,
          reset: true
        });
        document.getElementById("text")
        {
          if (window.runnerWindow.protect.protect({ line: 1 }))
            break;
          .innerHTML = "abc a do";
        }
      }
    } catch (error) {
      throw error;
    }
    //# sourceURL=wecinoqeje.js
    </script>
  </body>
</html>

这是一个语法错误。所以你的代码没有运行.