如何在React-Native

时间:2019-08-26 11:19:25

标签: javascript react-native webview

我在Webview中具有集成的fixflo(第三方服务)iframe,供用户从应用中创建问题。他们为每个要从Webview提取的问题返回唯一的ID。

我试图通过注入脚本来获取该ID并尝试登录,但失败了。这是我的iframe:

<iframe id="fixflo_iframe" scrollbars="no" style="border: 0px; width: 100%; height: 100%; overflow: hidden;" src="https://demo- uat.fixflo.com/issue/Plugin?&amp;email=abc@myemail.com&amp;Address.AddressLine1=Ground%20Floor&amp;Address1&amp;Address.AddressLine2=21%20sanrt%20Gardens&amp;20Address2&amp;Address.Town=London&amp;Address.PostCode=78965&amp;Title=Mr&amp;firstName=Brad&amp;surname=Ande&amp;contactNo=000000000&amp;callbackid=callbackid" width="100%" height="434px"></iframe>

这是网络团队共享的功能,他们如何从系统取回ID:

function receiveMessage(
if (event.origin.indexOf(".fixflo.com") === -1){
 if (event.data == "fixflo.scroll.top") {
     var el = document.getElementById("fixflo_iframe");
     el.scrollIntoView();
}
else if (event.data.name && event.data.name == "fixflo.issueCreateSuccess"){ 
 if(event.data.data && event.data.data.issueId){
   FOXTONS.Ajax.call({type : "GET",
     path : STUBAPI.API.stub +"account/myissue/proid/issues/get_fixflo_issue/"+event.data.data.issueId,
  data      : "",
  callback_error : function(){
  return; // supress errors
},
callback : function(response){
 STUB.Tmp.createTicket(response.data)}
     });
   }
 }
}

我想做的是:

<script>
  if (event.data.name && event.data.name == "fixflo.issueCreateSuccess") {
    if (event.data.data && event.data.data.issueId) {
      window.postMessage("${event.data.data.issueId}")
    }
  }
</script>
`;

 const handleMessage = (message) => {
  console.log(message.nativeEvent.data);
 };

return (
// eslint-disable-next-line react-native/no-inline-styles
<View style={{flex: 1}}>
  <WebView
    automaticallyAdjustContentInsets={false}
    source={{html: DEFAULT_URL}}
    javaScriptEnabled={true}
    domStorageEnabled={true}
    decelerationRate="normal"
    startInLoadingState={true}
    scalesPageToFit={true}
    injectedJavaScript = {injectedScript}
    onMessage = {handleMessage}
  />
</View>
);

在这方面任何帮助将不胜感激。 谢谢...

0 个答案:

没有答案