
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等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)