jsFiddle 在 Chrome 中不起作用

swa*_*esh 4 html javascript google-chrome jsfiddle

最近我用以下代码创建了一个小提琴 -

HTML

<button onclick="action();">click me<img src="http://dummyimage.com/200x200/000000/fff.gif&text=Image+1" width="200px" id="ImageButton1"></button>
Run Code Online (Sandbox Code Playgroud)

JS

function action ( )
{

if(document.getElementById("#ImageButton1").src == 'http://dummyimage.com/200x200/000000/fff.gif&text=Image+1' )
document.getElementById("#ImageButton1").src = 'http://dummyimage.com/200x200/dec4ce/fff.gif&text=Image+2';
else
document.getElementById("#ImageButton1").src = 'http://dummyimage.com/200x200/000000/fff.gif&text=Image+1';
}
Run Code Online (Sandbox Code Playgroud)

小提琴链接- http://jsfiddle.net/QVRUG/4/

此代码FF在我的本地html文件中工作,但在chrome控制台中引发错误-

Uncaught ReferenceError: action is not defined 
Run Code Online (Sandbox Code Playgroud)

我进一步调查了错误并发现 -

在 onload 函数中定义的函数的未捕获 ReferenceError

所以我也试过这个 -

window.action = function(){...code here...};
Run Code Online (Sandbox Code Playgroud)

但没有运气:(

请让我知道这种行为为什么它不能在 chrome 中工作并为其他人工作。请不要只提供一个补丁来使小提琴工作,因为我也对这种行为感兴趣。描述性答案(带有进一步研究的相关链接)在案例中非常受欢迎,这样我就可以在我的其余项目中正确移动。

如果问题不在轨道上,请告诉我,我将其删除(尽管我尽我最大的努力使问题清晰明了)

dsg*_*fin 5

这是因为“语言”Javascript 1.7在您的 jsFiddle 中设置。

为什么这只适用于 Firefox?

根据版本历史1.7仅在 Mozilla Firefox 浏览器中受支持,因此为什么它可以在那里工作,而不能在其他浏览器中使用。

解决方案:

从更改语言Javascript 1.7Javascript语言你的jsfiddle的部分,它会工作。我猜您一定已经将它具体更改为 1.7,因为默认值通常只是Javascript(您可以通过将代码粘贴到新的 jsFiddle 中来看到它,它将按预期工作)。

jsFiddle 示例。