在单击事件之前执行stringByEvaluatingJavaScriptFromString

时间:2011-02-09 19:13:23

标签: javascript iphone html uiwebview

我在iPhone中使用UIWebView并从资源中加载了一个HTML页面。

以下是我的HTML网页代码:

<html>
<head>
<title></title>
<SCRIPT language="JavaScript">
function callme(id)
{   
    var input = 'input'+id;
    document.getElementById(input).value = document.getElementById('code').value;
}
</SCRIPT>
</head>
<body> 
<input type=hidden id='code' name='code'>
<a href="#" id="click1" name="click1" onclick='callme(1);'>Click1</a>
<input type="text" id="input1" name="input1">
</br>
<a href="#" id="click2" name="click2" onclick='callme(2);'>Click2</a>
<input type=text id="input2" name="input2">
</br>
<a href="#" id="click3" name="click3" onclick='callme(3);'>Click3</a>
<input type=text id=input3 name=input3>

</body>
</html>

我使用以下代码在页面上注入了一些Javascript:

[webView stringByEvaluatingJavaScriptFromString:@"var field1 = document.getElementById('code'); field1.value='Code010203';"];

我想要的是当用户点击链接第一个注入的脚本应该运行然后onclick事件的功能(callme(1)或2或3)以便链接(Click1,Click2或C​​lick3)应该执行。

2 个答案:

答案 0 :(得分:1)

function callme(id)
{   
    injectedCode();
    var input = 'input'+id;
    document.getElementById(input).value = document.getElementById('code').value;
}

注入的代码是:

[webView stringByEvaluatingJavaScriptFromString:@"var field1; function injectedCode() {field1 = document.getElementById('code'); field1.value='Code010203';}"];

答案 1 :(得分:0)

我不是100%确定我理解你的问题。

如果您希望click事件运行注入的代码,这种方法是否适合您:

(这是下面注入的代码)

document.querySelector("#click1").onclick = function() {
    // do your new stuff here

    clickMe(1);
};

你可以通过一些努力来实现这种通用。

document.querySelector("a[id^=click]").onclick = function() {
    // do your new stuff here
    var clickMeArg = this.id.substring("click".length);
    clickMe(parseInt(clickMeArg, 10));
};