我在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?&email=abc@myemail.com&Address.AddressLine1=Ground%20Floor&Address1&Address.AddressLine2=21%20sanrt%20Gardens&20Address2&Address.Town=London&Address.PostCode=78965&Title=Mr&firstName=Brad&surname=Ande&contactNo=000000000&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>
);
在这方面任何帮助将不胜感激。 谢谢...