【问题标题】:JavaScript Safari - SyntaxError: Unexpected token '>'JavaScript Safari - SyntaxError: Unexpected token '>'
【发布时间】:2016-12-24 20:09:40
【问题描述】:

我的问题是这个 JavaScript sn-p 在 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了一下,已经在论坛看到这里了,这个问题经常出现,可惜我没有找到合适的解决方案。

提前谢谢你 最好的问候

【问题讨论】:

  • 寻找 Javascript 6 或 ECMAScript6 的兼容模式,你使用的语法属于更高版本的 js,所以检查一下。

标签: javascript safari syntax-error


【解决方案1】:

箭头函数 ()=>{} 是 es6 特性,firefox 和 chrome 都已经支持。但 safari 旧版本没有。更多信息请查看http://kangax.github.io/compat-table/es6/

【讨论】:

  • 但是,应该怎么解决?
【解决方案2】:

问题在于 Jerry Zhu 已经提到的 es6 中的箭头函数语法。

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

【讨论】:

    【解决方案3】:

    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

    【讨论】:

      【解决方案4】:

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

      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 接受与 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)); 如果坐标智能手机Event page.X是:Event.changedTouches[e.changedTouches.length-1].pageX;

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-12-21
        • 2013-06-19
        • 1970-01-01
        • 2017-07-06
        相关资源
        最近更新 更多