解决 Setting onMessage on a WebView overrides existing values of window.postMessage, but a previous value was defined.

在 issue 里并没有找到官方的解决办法:不过下面这段代码,就可以不在崩溃!

let getTitle: Function = function(url: string) {
  setTimeout(function() {
    // 防止postMessage崩溃
    var originalPostMessage = window.postMessage;
    var patchedPostMessage = function(
      message: any,
      targetOrigin: string,
      transfer?: any[]
    ) {
      originalPostMessage(message, targetOrigin, transfer);
    };
    patchedPostMessage.toString = function() {
      return String(Object.hasOwnProperty).replace(
        "hasOwnProperty",
        "postMessage"
      );
    };
    window.postMessage = patchedPostMessage;
    window.postMessage(JSON.stringify({ title: document.title }), url);
  }, 0);
};
let titleJs = "(" + String(getTitle) + ")();";

https://github.com/facebook/react-native/issues/10865#issuecomment-269847703

时间: 2024-10-24 21:27:17

解决 Setting onMessage on a WebView overrides existing values of window.postMessage, but a previous value was defined.的相关文章

转: 解决Setting property 'source' to 'org.eclipse.jst.jee.server的问题

我发现这个问题上网搜索 ,找到的地址为:http://blog.csdn.net/z69183787/article/details/19911935 .但是他的标题上也有一个"转",我没找到原作者,暂时只把找到的原址标注一下吧 这是我于2013年9月4号晚遇到的问题,为了这个问题我一夜没睡!对于这个问题,我相信我的方法已经能帮90%的人解决了!当你用Eclipse运行web项目的时候,你就会看到控制台出现:WARNING: [SetPropertiesRule]{Server/Ser

解决Setting property 'source' to 'org.eclipse.jst.jee.server的问题

这是我于2013年9月4号晚遇到的问题,为了这个问题我一夜没睡!对于这个问题,我相信我的方法已经能帮90%的人解决了!当你用Eclipse运行web项目的时候,你就会看到控制台出现:WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:firstProject' did not find a matching

解决ORA-00824: cannot set sga_target due to existing

今天Linux服务器机子重启了下,Oracle启动不起来,提示:解决ORA-00824: cannot set sga_target due to existing 看了很多解决方法,发现下面这个特别好,特别简单 转:http://blog.chinaunix.net/uid-22448653-id-388649.html 按照这种思路: 1.我们完全可以先用pfile的配置参数启动数据库实例 2.通过pfile重建spfile文件(create spfile from pfile) 3.关闭数

window.postMessage解决跨域

一.基本原理 HTML5为了解决跨域,引入了跨文档通信API(Cross-document messaging).这个API为window对象新增了一个window.postMessage方法,允许跨窗口通信,不论这两个窗口是否同源.Internet Explorer 8+, chrome,Firefox , Opera和Safari 都支持这个功能. 二.测试步骤 1.创建a.html <!DOCTYPE html> <html lang="en"> <

解决Android签名混淆后WebView与JS交互失效的问题

[本博客内的文章是本人的学习笔记总结,如有错误请各位批评指正,谢谢!欢迎加入群285077071讨论] 问题描述:在开发公司项目的过程中,发现打包签名后app的WebView却不能正常加载网页了,而没有打包的app却一切正常!这是什么问题呢?? 解决思路:打包签名前后加载的都是同一个网页,不同的只是签名后app被混淆了--于是,打开proguard-project.txt文件,里面果然有一行被注释了的语句,如下图 既然打包签名混淆后就不能调用的话,那么我们就把这个注释打开,并且换成自己对应的类名

解决Iframe跨域高度自适应,利用window.postMessage()实现跨域消息传递页面高度(JavaScript)

在iframe跨域引用高度自适应这块写的js方式都试了不管用,最终使用的是window.postMessage() 跨域获取高度 传递信息 1.首先,在主页面上使用iframe引入子页面:也就是A.html页面引入B.html页面,下面看看A.html <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> </head>

基于React-Native0.55.4的语音识别项目全栈方案

移动端的API能力验证方案与PC端不一样!不一样!!不一样!!! 即使需要使用的API都存在,也不一定能用,这一点和PC端是有很大区别的,国内的手机系统虽然都是基于Android,但几乎都会经过各大厂商的定制,功能与原版Android系统并不是完全一致的,在考察技术方案的时候一定要确认用demo把功能跑起来才可以,别问我怎么知道的. 一. 移动端直接访问Web应用? PC端基于Web API的语音识别方案可参考<[Recorder.js+百度语音识别]全栈方案技术细节>一文. 1. 调用Web

(转)完美解决 Android WebView 文本框获取焦点后自动放大有关问题

完美解决 Android WebView 文本框获取焦点后自动放大问题 前几天在写一个项目时,要求在项目中嵌入一个WebView 本来很快就完成了,测试也没有问题.但发给新加坡时,他们测试都会出现文本框聚焦时,网页面会放大(他们用三星手机测试的) 网上查了好久参考他的方法加上去测试 http://www.cppblog.com/guojingjia2006/archive/2012/12/18/196429.html 下面我将原文copy过来 **************************

完美解决 Android WebView 文本框获取焦点后自动放大问题

前几天在写一个项目时,要求在项目中嵌入一个WebView 本来很快就完成了,测试也没有问题.但发给新加坡时,他们测试都会出现文本框聚焦时,网页面会放大(他们用三星手机测试的) 网上查了好久参考他的方法加上去测试 http://www.cppblog.com/guojingjia2006/archive/2012/12/18/196429.html 下面我将原文copy过来 **************************************************************