Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

在IE下, 初始化zrender失败导致echart图表无法显示 #189

Closed
shikelong opened this issue Jun 8, 2016 · 19 comments
Closed

在IE下, 初始化zrender失败导致echart图表无法显示 #189

shikelong opened this issue Jun 8, 2016 · 19 comments

Comments

@shikelong
Copy link

shikelong commented Jun 8, 2016

环境

  • windows 10
  • ie 11
  • "echarts": "^3.1.10",

浏览器报错

···bash
SCRIPT65535: Invalid calling object


报错点 Animation.js (181,1)

···js

 start: function () {
            var self = this;

            this._running = true;

            function step() {
                if (self._running) {

                    requestAnimationFrame(step);

                    self._update();
                }
            }

            this._time = new Date().getTime();
            requestAnimationFrame(step);
        }

运行requestAnimationFrame这个方法的时候就会报错

谢谢。

@pissang
Copy link
Contributor

pissang commented Jun 8, 2016

我无法在 IE 11 上复现这个问题,你看下是不是有其它库覆盖掉了 requestAnimationFrame 这个方法

@shikelong
Copy link
Author

shikelong commented Jun 8, 2016

恩 应该是其他库的原因 我在没有其他ui库的纯净环境下试了试是可以再ie11上出来的。

@shikelong
Copy link
Author

shikelong commented Jun 8, 2016

https://msdn.microsoft.com/library/gg622930(v=vs.85).aspx

使用 window.requestAnimationFrame(step) 调用就没有问题了。
使用requestAnimationFrame(step)调用会报错。

@shikelong
Copy link
Author

shikelong commented Jun 8, 2016

使用 requestAnimationFrame=window.requestAnimationFrame.bind(window) 即可修复这个问题

@shikelong
Copy link
Author

shikelong commented Jun 8, 2016

这个问题确实挺诡异的 我引用的其他库没有重写这个原生方法的

@shikelong
Copy link
Author

shikelong commented Jun 8, 2016

request

@shikelong
Copy link
Author

shikelong commented Jun 8, 2016

建议修改zrender这块的代码以增强在ie下的兼容性。 使用 requestAnimationFrame=window.requestAnimationFrame.bind(window) 来写的话不适应与js的严格模式。

@shikelong shikelong reopened this Jun 8, 2016
@shikelong
Copy link
Author

shikelong commented Jun 8, 2016

@kinglywork
Copy link

kinglywork commented Jun 9, 2016

如果你是在webpack中使用echarts,则webpack的config中devtool设置为含有eval时,可以重现该问题

zloirock/core-js#62

把devtool设置为不含有eval的方式即可

@airwin
Copy link

airwin commented Jul 14, 2016

感谢分享,遇到了同样的问题

@ChaoYuLeo
Copy link

ChaoYuLeo commented Jul 30, 2016

万分感谢,我也遇到了同样的问题。

@tongjun741
Copy link

tongjun741 commented Sep 5, 2016

遇到了同样的问题,关注中

@Roscoe93
Copy link

Roscoe93 commented Nov 8, 2016

同样的问题,使用eval-source-map,requestAnimationFrame会报错

@Neilxzn
Copy link

Neilxzn commented Nov 14, 2016

同样遇到这样的问题关注中

@pissang
Copy link
Contributor

pissang commented Nov 15, 2016

@shikelong

@nianhua110
Copy link

nianhua110 commented Jan 16, 2017

如何解決的呢,我用的echarts-for-react 依然存在這個問題。

@DanielWLam
Copy link

DanielWLam commented Apr 11, 2017

@shikelong 你那方法也太投机了吧,人家requestAnimationFrame本身做了浏览器兼容性处理,你倒好,直接window.requestAnimationFrame?

@shikelong
Copy link
Author

shikelong commented Apr 11, 2017

@DanielWLam 我没有细看zrender的代码。具体怎么解决这个问题当然是看pissang怎么改。

至于我们的临时的解决方式。 webpack devtools的配置中不要使用eval选项即可。

@100pah
Copy link
Contributor

100pah commented May 26, 2017

另外记录下这个解答链接:http://www.foreverpx.cn/2017/03/04/echarts_webpack_ie/

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests