在WebView Android中获取事件单击组件

时间:2012-07-19 17:43:07

标签: javascript android webview

我有一个包含输入html的webview,如下所示:

<input type="file" name="upload" onChange="checkimg(this.value)"/>

和JavaScript函数与该组件

对应
function checkimg(fName){
    fullName=fName;
    splitName = fullName.split(".");
    fileType = splitName[1];
    fileType = fileType.toLowerCase();
    if (fileType == 'jpg'|| fileType == 'gif' || fileType == 'png' || fileType == 'jpeg' )
    {} 
    else {
        alert("Choose file with end : jpg, gif, png, jpeg");
        }
}

现在我想在点击输入类型文件时获取事件。我该怎么办?

1 个答案:

答案 0 :(得分:0)

经过一番阅读后,我终于得到了它。当你对javascript一无所知以及文档在这个主题上相当薄时,有点难。这是我的解决方案,希望这会有助于其他人:

最后一个HTML页面包含2个按钮:

<div>
<button type="button" id="ok"
    style="font-weight: 700; margin-right: 20px;" onclick="validClick();">J'accepte</button>
<button type="button" id="no" onclick="refuseClick();">Je refuse</button>
</div>

我将clic的事件发送到HTML页面顶部的javascript:

<script language="javascript">
function validClick() {
    valid.performClick();
    document.getElementById("ok").value = "J'accepte";
}
function refuseClick(){
    refuse.performClick();
    document.getElementById("no").value = "Je refuse";
}
</script>

有效和拒绝是我通过javascript接口传递的两个java对象以使用它们的方法。所以在java中,我创建了2个按钮(实际上并没有显示在Activity中,只是在这里用于他们的方法,并且是HTML按钮的阴影:

valid = new Button(ctx);
valid.setOnClickListener(this);
refuse = new Button(ctx);
refuse.setOnClickListener(this);

然后我将javascript添加到我的WebView:

// Enablejavascript

WebSettings ws = wv.getSettings();
ws.setJavaScriptEnabled(true);

//添加界面以记录javascript事件

wv.addJavascriptInterface(valid, "valid");
wv.addJavascriptInterface(refuse, "refuse");

最后,处理onClick方法中的click事件:

@Override
public void onClick(View v) {
    if (v.equals(valid)) {
        //do Something
    } else if (v.equals(refuse)) {
        //do Something else }
}

希望这会对你有所帮助。

由于