用IFRAME将数据从javascript传递到objectiv

用IFRAME将数据从javascript传递到objectiv

本文介绍了在IOS 10中使用IFRAME将数据从javascript传递到objective-c时,在ShouldStartLoadWithRequest中获取:blank:空白的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我将数据从javascript传递给objective-c。因为我正在使用IFRAME。

这是我的代码:

context.html

I am passing my data from javascript to objective-c. for that I am using IFRAME.
Here is my code:
context.html

function openCustomURLinIFrame(src)
{
    alert(src);
    var rootElm = document.documentElement;
    var newFrameElm = document.createElement("IFRAME");
    newFrameElm.setAttribute("src",src);
    document.documentElement.appendChild(newFrameElm);
    //remove the frame now
    newFrameElm.parentNode.removeChild(newFrameElm);
    newFrameElm = null;
}

Indoor.m

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
    NSLog(@"Loading: %@", [request URL]);
    NSURL *url = [request URL];
    NSString *urlStr = url.absoluteString;

    return [self processURL:urlStr];

}

我得到了

我正在使用xCode 8.2.1它是在IOS 9.3中运行良好但在iOS 10.2中无效。

I am using xCode 8.2.1 it is working well in IOS 9.3 but not working in iOS 10.2.

编辑:

我在.html文件中的警报屏幕截图。$


My alert screenshot in .html file.

编辑:

html文件中的方法,我在其中调用 openCustomURLinIFrame 方法。

function calliOSFunction(functionName, args, successCallback, errorCallback)
{
    var url = "js2ios://";
    var callInfo = {};
    callInfo.functionname = functionName;
    //alert("Custom menu clicked !!"+functionName);
    if (successCallback)
    {
        //alert("Success !!"+functionName);
        callInfo.success = successCallback;
    }
    if (errorCallback)
    {
        //alert("Error !!"+functionName);
        callInfo.error = errorCallback;
    }
    if (args)
    {
        //alert("args !!"+args);
        callInfo.args = args;
    }
    url += JSON.stringify(callInfo)
    openCustomURLinIFrame(url);
}

帮我解决此问题。

推荐答案

经过很长一段时间我得到了答案。

Finally after long time I got my answer.

function calliOSFunction(functionName, args, successCallback, errorCallback)
{
    var url = "js2ios:///";   /* Added one more "/" */
    var callInfo = {};
    callInfo.functionname = functionName;
    //alert("Custom menu clicked !!"+functionName);
    if (successCallback)
    {
        //alert("Success !!"+functionName);
        callInfo.success = successCallback;
    }
    if (errorCallback)
    {
        //alert("Error !!"+functionName);
        callInfo.error = errorCallback;
    }
    if (args)
    {
        //alert("args !!"+args);
        callInfo.args = args;
    }

    url += JSON.stringify(callInfo)

    openCustomURLinIFrame(url);
}

我在网址中再添加一个/变量。

I add one more "/" in url variable.

这篇关于在IOS 10中使用IFRAME将数据从javascript传递到objective-c时,在ShouldStartLoadWithRequest中获取:blank:空白的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-04 15:18