-
Creator 版本:2.0.8
-
目标平台:浏览器
-
详细报错信息,包含调用堆栈:
-
重现方式:
前提 : 没有给场景做自动释放,也没有给手动或自动加载的资源做自动释放的设置
1,创建一个包含cc.webview的预制
2,该预制的parent设置为引擎的常驻节点
3,切换场景,就会报错,并且报错是关于“同源”问题,见图片
注:1,ccc官网提到,webview的同源问题需要自己解决,我们已经通过postMessage搞定,但是我很好奇,切换场景怎么也会报“同源策略”的错误,麻烦引擎组或者同学解答一下。 -
出现概率:必现
-
额外线索:
WebviewTest.rar (553.7 KB)
我看下。
我这边按照复现步骤没能复现问题,你看下是否可以给我一个demo,并说明测试平台?
浏览器测试,chrome浏览器,ccc版本是2.0.8,
demo已经上传,麻烦啦!
另外还有个问题,在切换场景时,为什么webview中的网页会被从新刷新?这个出乎意料的,这个是引擎的bug还是说就该这样?
webview是加到了常驻节点上,难道是因为这个原因吗?
this.iframeContentWindow = webview._impl._iframe.contentWindow;
这句代码执行后,破坏了H5上的同源策略,所以报错。不能把contentWindow放到另外的内存空间上。
建议你换个思路,避开这个问题。
webview没有刷新,只不过是node节点应该被常驻了,所以他本身的监听事件:“loaded”、“loading” 触发了监听事件,所以你可以在某一个合理的时机,及时的关闭监听即可。
感谢回复,
第一个问题,this.iframeContentWindow = webview._impl._iframe.contentWindow;我换了思路书写
第二个问题:webview有没有被刷新呢?我的理解如下:因为我的webview节点是在常驻节点上,我看了下源码,在切换场景时常驻节点的parent会被重新赋值(新的父节点是scene):
这就会导致CCWebView的onEnable再次被触发执行,onEnable中执行了impl.loadURL(this._url); 因此网页从新刷新:
简单的通过注销“loaded”、“loading”,应该是不起作用的吧?
如果有错误,请指出。
刚才的回复忘记@您,希望看下,
我现在怎么做才能不需要每次切换场景都重新请求



