我有一个问题,这个JavaScript代码段在Firefox / Chrome中运行没有任何问题,Safari我得到错误:“SyntaxError:Unexpected token'>'”。
这是代码:
window.onclick = (test) => {
const googleWindow = window.open();
fakeAjax(response => {
googleWindow.location.replace(`https://google.com?q=${response}`);
});
};
function fakeAjax(callback) {
setTimeout(() => {
callback('example');
}, 1);
}
我已经google了,已经在论坛上看过,问题经常出现,遗憾的是我还没有找到合适的解决方案。
提前谢谢你好问候
箭头函数()=> {}是es6功能,已经支持firefox和chrome。但safari旧版本没有。请查看http://kangax.github.io/compat-table/es6/以获取更多信息。
Safari 5.1非常糟糕!
示例它不会加载=>
var t=w.map(v => String.fromCharCode(v));
更换它将负责
var t=w.map(function(v){return String.fromCharCode(v)});
要使脚本适用于所有浏览器,请避免
=>
而不是function () {}
function (param = x) {}
,更喜欢function (param) {if (param == 'undefined') {param = x;}}
let
并使用var
代替。问题是来自es6的箭头函数语法,正如Jerry Zhu已经提到的那样。
要支持旧版浏览器,您需要将“response => {”替换为“function(response){”,并将“setTimeout(()=> {”替换为“setTimeout(function(){”。
建议您安静地使用所有浏览器......
VAR => RESULT VAR
,更喜欢function (VAR) {return RESULT VAR;}
function (VAR = DEFAULTVALUE) {}
使用function (VAR) {if (VAR == "undefined") VAR = DEFAULTVALUE;}
document.getelementByID
Object.setAttribute (property, value)
而不是Object.property = value
。这可能导致错误或不当行为。某些样式属性只能在设置时使用,尤其是CSS3。如果你尊重它的用法,Javascript接受与CSS相同的东西。
this.Ypos = document.body.scrollTop + ((! this.IE)? e.pageY: (window.event.y));
this.Xpos = document.body.scrollLeft + ((! this.IE)? e.pageX: (window.event.x));
如果坐标智能手机事件页面.X是:Event.changedTouches[e.changedTouches.length-1].pageX
;
Object.appendChild (mebox)
我53岁,我已经在互联网上工作了35年,从那以后一切都没有真正改变。