以前在博文中提到过,在
webview
中使用
jQuery
等框架,很影响网页加载速度,所以我都是使用纯
Javascript
来写页面脚本。在开发
webview
程序过程中,经常用到了一些东西,总结一下:
1.
排序:
对一个对象数组进行排序,大的在前,小的在后
var array =
[{id:1,date: 1272775205971}, {id:2,date: 1272775145384}, {id:3,date: 1272774832649}]
function sortByDate(array) {
array.sort(function(a, b){
if(a.date > b.date) return -1;
else if(a.date < b.date) return 1;
else return 0;
});
}
2.
隐藏桩节点:
页面上有如下元素,
id
是
line
的
div
是一个桩节点,
content
下的所有内容都是由这个桩节点
clone
出来的。
<div id=’content’>
<div id='line'>
<img class='type' src=''/>
<span class='duration'>...</span>
<span class='date'>...</span>
</div>
</div>
在所有节点
clone
结束之后,需要隐藏这个桩节点。其他的克隆出来的节点
id
也是
line
,没有改变,
webkit
下,
firstChild
获取的节点是
textNode
,所以需要进行一些判断,来确定这个桩节点。
function hideStub() {
var stub = (function(){
return arguments[0].nodeType == 1?arguments[0]:arguments.callee(arguments[0].nextSibling);
})(document.getElementById('content').firstChild);
stub.style.display = 'none';
}
3.
以前博文中提过,
Webview
支持
java
和
javascript
互调。而调用
Java
方法,返回的字符串不是
javascript
的本地字符串。简单来说,就是
javascript
的字符串和从
java
中获取的字符串不一样,很多字符串操作函数都不支持。需要进行一道转换,转换方法就是对它调用
toLocaleString()
函数。
4.
从
java
中获取的
json
字符串,在
javascript
中要转成
json
对象,一个很简单的方法就是
eval(json)
或
window.eval(json)
。我以前也一直是这么做的。昨天,我这么解析一个从
java
中返回的
json
字符串,却遇到了问题,用这个
eval
解析它,
webkit
一直报错,说语法错误。后来我用了另外一种方法,解决了。
很简单,就是构造一个函数,这个函数返回这个字符串,然后运行这个函数,就得到了
json
对象。
var x = (new Function('return '+ json.toLocaleString()+';'))();
5.
Webview
中的页面,要可拖动并且里面元素可以点击,这个问题曾困扰过我,因为事件的冒泡机制似乎并不太管用。后来还是解决了,这种方法我经常用到。
页面:
<div id='log'>
<!—- 整个log元素需要可以拖动 -->
<div id='line'>
<img class='type' src=''/>
<span class='duration'>...</span>
<span class='date'>...</span>
</div>
<div id='line'>
<img class='type' src=''/>
<span class='duration'>...</span>
<span class='date'>...</span>
</div>
<!—- 很多个id是line的div,每个都可以点击 -->
</div>
Javascript:
document.getElementById('log').addEventListener('touchstart', function(e){
Scroll.moved = false;
e.preventDefault();
clearTimeout(Scroll.handler);
showScrollBar();
Scroll.down = true;
Scroll.y = e.touches[0].clientY;
}, false);
document.getElementById('log').addEventListener('touchmove', function(e){
if(!Scroll.moved) {//没有滚动的时候,不执行move操作
var rx = Scroll.ix - e.touches[0].clientX;
var ry = Scroll.iy - e.touches[0].clientY;
if(rx>-10 && rx <10 && ry>-10 && ry<10) return;//移动范围小于10*10,则认为没有滚动
Scroll.moved = true;//否则,认为滚动了
}
e.preventDefault();
var dy = e.touches[0].clientY - Scroll.y;
document.getElementById('log').scrollTop += -dy;
Scroll.y = e.touches[0].clientY;
}, false);
document.getElementById('log').addEventListener('touchend', function(e){
e.preventDefault();
Scroll.moved = false;
Scroll.handler = setTimeout(hideScrollBar, 1000);
}, false);
子节点添加点击:
document.getElementById('line').addEventListener('touchstart', function(e){
e.preventDefault();
}, false);
child.addEventListener('touchend', function(e){
e.preventDefault();
if(Scroll.moved) return;//页面滚动了,不执行任何操作
//否则,在此触发点击事件,执行一些操作
}, false);
//用于存储滚动的状态
Scroll = {
moved:false,
handler:null,
down:false,
y:0,
ix:0,
iy:0,
dy:0
}
分享到:
相关推荐
首先,将项目依赖添加到构建文件,然后在布局XML文件中用VideoEnabledWebView替换原生的WebView。接着,可能需要在Java代码中设置WebView的JavaScript接口,以便于JavaScript和Android原生代码之间的通信。此外,...
在移动应用中,它们经常以Webview组件的形式存在,嵌入到原生应用程序内,实现原生与Web的融合。 1. HTML5:HTML5是HTML的最新版本,引入了许多新特性,如离线存储(离线Web应用)、媒体元素(audio和video)、拖放...
当我们在WebView中执行JavaScript代码时,可以通过桥接调用到Objective-C或Swift的方法,反之亦然。 四、Swift与JS交互 1. 注册Swift方法供JS调用: - 使用WKWebView的`evaluateJavaScript(_:completionHandler:)`...
JSWebView是Android和iOS中用于加载网页内容的组件,它可以嵌入到原生应用中,让应用能够执行JavaScript代码。在Android中,这个组件通常称为`WebView`,而在iOS中则是`WKWebView`(在早期版本的iOS中是`UIWebView`...
项目要用到Webview和js交互,查了查以前的项目感觉还是有必要整理下的。 简单描述下项目中用到的地方,比如说在web页需要...首先需要初始化WebView以及设置支持JavaScript,常用的配置属性有一下几种,可以在项目中根
首先,Android提供了WebView组件,它是Android应用中用来加载和显示网页内容的控件。WebView不仅能够显示HTML页面,还支持JavaScript执行,并且可以启用JavaScript与Android应用进行交互。通过WebView的`...
你可以通过CocoaPods或Carthage进行管理,或者手动添加源代码到项目中。 1. **CocoaPods集成**: 在你的`Podfile`中添加以下行: ``` pod 'WebViewJavascriptBridge' ``` 然后运行`pod install`。 2. **...
综上所述,`WebView.loadUri()`是Android中用于加载网页的重要方法,结合其他设置和事件处理,可以实现丰富的网页浏览功能。在实际开发中,应考虑异常处理、用户体验等因素,以确保应用程序的稳定性和易用性。
2. 将JavaScript代码注入到网页中,可以使用`evaluateJavaScript:`方法。 3. 在JavaScript中,通过`window.webkit.messageHandlers`对象调用指定的处理器发送消息。 例如: ```swift let userContentController = ...
1. **WebView组件**:Android系统内置了WebView组件,它是Android应用中用于加载和显示网页的主要工具。通过WebView,我们可以将HTML内容渲染为一个可交互的视图。使用`WebView.loadUrl()`方法可以加载指定的网页URL...
例如,WebView组件是Android中用来显示网页内容的控件,它可以加载HTML5页面并执行JavaScript代码。 JavaScript是与HTML5紧密配合的脚本语言,它在Android应用中的作用至关重要。通过JavaScript,开发者可以在网页...
该APK可能是实现这一功能的载体,它可能包含了一个自定义的Webview组件,该组件能够捕获并传递按键事件到与之交互的HTML页面。 `index.html`是HTML文件,它可能是一个网页设计,用于展示如何在Webview中捕获和显示...
2. **WebView组件**:`WebView`是Android SDK中用于加载和显示网页内容的关键组件。它能够内嵌HTML、CSS和JavaScript,使得在Android应用内直接浏览网页成为可能。在Demo中,`WebView`的初始化、加载网页URL以及设置...
`WebView`还支持一些其他功能,如JavaScript交互、网页加载进度监听等。 总的来说,这个例子展示了如何在安卓应用中创建一个自定义的数字锁屏界面,利用`GridView`展示数字键盘,以及如何处理用户输入。同时,也为...
首先,WebView是Android中用于加载网页内容的组件,它允许你在应用内部显示HTML、CSS和JavaScript。在实现翻书效果时,你可以利用WebView加载带有3D翻页动画的Web页面,通过自定义JavaScript接口与Java代码交互,...
例如,OC可以注册一个JavaScript对象到WebView,H5通过调用这个对象的方法实现向OC发送消息。反之,OC可以通过`stringByEvaluatingJavaScriptFromString:`方法执行JavaScript代码,从而获取H5的数据。 - **注入...
- `WebView`是Android中用于加载和显示网页的核心组件,它能解析HTML、CSS和JavaScript。 - 实现网页加载和前进/后退功能,通过`loadUrl()`方法加载指定URL,`goBack()`和`goForward()`实现浏览历史操作。 4. **...
- WebView是iOS应用中用来显示网页内容的组件。 - 面试时可能会考察如何在iOS应用中使用JavaScript与WebView进行交互。 通过上面的整理可以看出,这份面试资料涵盖了从基本的语言特性到高级的设计模式等多个方面...
这里可能是创建一个WebView实例,加载指定的网页,并可能涉及到与JavaScript交互,实现页面的定制和控制。 8. **Android之AsyncTask**: AsyncTask是Android提供的轻量级并发工具,用于在后台执行耗时操作,然后在...
Chrome Frame 会把最新版的Chrome Webkit 内核和JavaScript 引擎注入到IE中, IE浏览器将获得Chrome的性能和功能 目录 摘要 I ABSTRACT II 专业名词清单 III 第一章 绪论 1 1.1 研究背景与意义 1 1.2国内外相关...