Object-c 和js交互所得

Object-c 和js交互所得,第1张

1、判断js 是否包含某个函数

    function respondsToSel(sel){

    varisFunction =false;

    try{

        isFunction =typeof(eval(sel)) =="function";

    }catch{}

    returnisFunction;

}

您好,很高兴能帮助您,Android中webview和js之间的交互1android中利用webview调用网页上的js代码。Android 中可以通过webview来实现和js的交互,在程序中调用js代码,只需要将webview控件的支持js的属性设置为true,,然后通过loadUrl就可以直接进行调用,如下所示:mWebViewgetSettings()setJavaScriptEnabled(true);mWebViewloadUrl("javascript:test()");2 网页上调用android中java代码的方法在网页中调用java代码,需要在webview控件中添加javascriptInterface。如下所示:mWebViewaddJavascriptInterface(new Object() { public void clickOnAndroid() { mHandlerpost(new Runnable() { public void run() { ToastmakeText(Testthis, "测试调用java", ToastLENGTH_LONG)show(); } }); } }, "demo");在网页中,只需要像调用js方法一样,进行调用就可以<div id='b'><a onclick="windowdemoclickOnAndroid()">bc</a></div>3 Java代码调用js并传参首先需要带参数的js函数,如function test(str),然后只需在调用js时传入参数即可,如下所示:mWebViewloadUrl("javascript:test('aa')");4Js中调用java函数并传参首先一样需要带参数的函数形式,但需注意此处的参数需要final类型,即得到以后不可修改,如果需要修改其中的值,可以先设置中间变量,然后进行修改。如下所示:mWebViewaddJavascriptInterface(new Object() { public void clickOnAndroid(final int i) { mHandlerpost(new Runnable() { public void run() { int j = i; j++;ToastmakeText(Testthis, "测试调用java" + StringvalueOf(j), ToastLENGTH_LONG)show(); } }); } }, "demo");然后在html页面中,利用如下代码<div id='b'><a onclick="windowdemoclickOnAndroid(2)">bc</a></div>,即可实现调用你的采纳是我前进的动力,还有不懂的地方,请你继续“追问”!如你还有别的问题,可另外向我求助;答题不易,互相理解,互相帮助!

不是,可以用js配合flash的as3来与php交互。比如页游里的socket通讯。

还有就是通过配合only ie的activeX控件也可以交互。

(ajax方式实际上也是一种js通过ie activeX控件与后台程序交互的方式,只是所有浏览器都支持ajax方式而已)

最后有个现在来说在国内设计界比较不流行的,通过java的applet与js配合,实现后台交互。不过国外还是有不少的。像facebook,就是一度用applet来实现它的上传工具。网页3D游戏也有不少。

方法:

1、通过webview访问js脚本

2、js脚本再调用webview中的java函数把结果返回

示例代码:

通过本地的webview打开脚本页面。

调用步骤

1、设置webview支持脚本

webSettingssetJavaScriptEnabled(true);

2、打开脚本页面

mWebViewloadUrl("file:///android_asset/demohtml");//这里打开该app的asset目录下的demohtml,里面含有wave函数脚本

3、调用脚本

mWebViewloadUrl("javascript:wave()");//调用打开页面中的wave函数

4、webview中建立js能够访问

 mWebViewaddJavascriptInterface(new DemoJavaScriptInterface(), "demo");//js可以通过demo访问到DemoJavaScriptInterface 类中的方法。

 final class DemoJavaScriptInterface {

        DemoJavaScriptInterface() {

        }

        public void clickOnAndroid(String result) {

             Systemoutprinltn("返回的结果"+result);           

        }

    }

5、js访问webview方法

<script language="javascript">

        function wave() {

            alert("1");

            windowdemoclickOnAndroid('结果1');//返回结果,调用java方法

        }

    </script>

开发环境是Visual Studio 2008 阅读此文需要有C#和javascript开发基础。

1首先新建一个项目,在默认窗体form1上拖拽一个webbrowser1

2给form1的Load时间事件添加如下代码:

private void Form1_Load(object sender, EventArgs e)

{

webBrowser1ObjectForScripting = this;    

}

3打开解决方案资源管理器,在项目上单击鼠标右键,选择属性打开项目属性设置。

4在应用程序选项卡中点击程序集信息,然后勾选“使程序集COM可见”。

做完这些基本的设置之后就可以让webbrowser和js交互了,交互方法如下:

C#调用js函数的方法:

首先在js中定义被c#调用的方法:

function  Messageaa(message)

{

     alert(message);

}

在c#调用js方法Messageaaprivate void button1_Click(object sender, EventArgs e)

{    // 调用JavaScript的messageBox方法,并传入参数

   object[] objects = new object[1];

   objects[0] = "c#diao javascript";

   webBrowser1DocumentInvokeScript("Messageaa", objects);

}

用JS调用C#函数的方法:

首先在c#中定义被js调用的方法:public void MyMessageBox(string message)

{

MessageBoxShow(message);

}

在js中调用c#方法:<!-- 调用C#方法 -->

<button onclick="windowexternalMyMessageBox('javascript访问C#代码')" >javascript访问C#代码</button>

以上就是关于Object-c 和js交互所得全部的内容,包括:Object-c 和js交互所得、安卓和javascript交互必须通过webView吗可以用安卓的其他控件调用js吗还有他们能通过volley交互吗、JavaScript和php交互,是不是只能用ajax等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/10175323.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-06
下一篇2023-05-06

发表评论

登录后才能评论

评论列表(0条)

    保存