JavaScript Safari - SyntaxError:意外的令牌'>'

时间:2016-08-18 02:19:53

标签: javascript safari syntax-error

我遇到的问题是这个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了,已经在论坛上看过了,问题经常出现,遗憾的是我还没有找到合适的解决方案。

提前谢谢你 最好的问候

4 个答案:

答案 0 :(得分:3)

箭头功能()=> {}是es6功能,已经支持firefox和chrome。但safari旧版本没有。有关详细信息,请查看http://kangax.github.io/compat-table/es6/

答案 1 :(得分:1)

Safari 5.1真的很糟糕!!!

示例未使用=>

加载
var t=w.map(v => String.fromCharCode(v));

替换需要付费

var t=w.map(function(v){return String.fromCharCode(v)});

要使脚本在所有浏览器上都能正常工作,请避免

  1. =>代替function () {}
  2. function (param = x) {},更喜欢function (param) {if (param == 'undefined') {param = x;}}
  3. let并改用var

答案 2 :(得分:0)

问题出在es6中的箭头函数语法上,正如朱利(Jerry Zhu)已经提到过的。

要支持较旧的浏览器,您需要将“ response => {”替换为“ function(response){”,还要将“ setTimeout(()=> {”替换为“ setTimeout(function(){”)。

答案 3 :(得分:0)

建议您在所有浏览器中保持安静...

  1. 避免使用VAR => RESULT VAR,建议使用function (VAR) {return RESULT VAR;}

  2. 请不要在代码中使用带有以下值的参数:function (VAR = DEFAULTVALUE) {} 使用function (VAR) {if (VAR == "undefined") VAR = DEFAULTVALUE;}

  3. 要获取对象:document.getelementByID

  4. 要指定未初始化的属性,请选择Object.setAttribute (property, value)而不是Object.property = value。这可能会导致错误或不当行为。

某些样式属性只能在设置它们后才能使用,尤其是CSS3。只要您尊重JavaScript的用法,JavaScript就会接受与CSS相同的东西。

  1. 从Netscape X和IE或其他浏览器Opéra,FireFox,Apple X等获取DOM坐标浏览器...

this.Ypos = document.body.scrollTop + ((! this.IE)? e.pageY: (window.event.y)); this.Xpos = document.body.scrollLeft + ((! this.IE)? e.pageX: (window.event.x)); 如果协调智能手机的事件page.X为:Event.changedTouches[e.changedTouches.length-1].pageX;

  1. 要在文档中打印对象:Object.appendChild (mebox)

我今年53岁,在互联网上工作了35年,从那时起,一切都没有真正改变。