0

我正在制作一个带有程序编辑器的网站,供用户制作 HTML 程序。我通常通过输入<script> alert("Hi!"); </script>body输入区域来测试它,但没有警报出现。从代码中可以看出,结果是脚本在div. 那么scripts 在divs 中起作用吗?如果他们这样做,这是我的代码(至少是重要的部分):

这是我按下“运行!”时要运行的脚本。按钮:

<script>
    function onclick(){
        document.getElementsByTagName("head")["0"].innerHTML += eval(document.getElementById("editorHead").value);
        document.getElementById("result").innerHTML = eval(document.getElementById("editorBody").value);
    }
</script>

这是输入区域和运行按钮的代码(省略它们之间的文本和类属性):

<textarea id="editorHead" rows="20"></textarea>
<textarea id="editorBody" rows="20"></textarea>
<div id="result"></div>
<button onclick="onclick();">Run!</button>

我尝试将onclick' 的名称更改为run,这使得点击工作(在此之前,当你点击它时按钮不会变成蓝色),但就是这样。

4

1 回答 1

0

提出的问题是脚本在 div 中是否有效。是 <script></script> 标记内容在文档中出现的位置内联执行。

但是,它始终在文档上下文中执行。意思是这个 === 文件。因此,要绑定到 div 的 onclick 方法(在 javascript 中处理 ui 事件的方式),您需要找到 div :

document.findElementById("my-div-id").onclick = function(e) {
   // do something
};

请注意,如果存在默认点击行为(如在 a 标签上),则会破坏元素的默认行为

还要更清楚地了解预期的行为。做这个

<script>
    function doSomething() {
        alert();
    }
</script>
<button onclick="doSomething()">Button</button>
于 2013-11-13T20:57:10.803 回答