2011-02-09 50 views
2

我在iPhone中使用UIWebView並從資源中加載了一個HTML頁面。單擊事件前執行stringByEvaluatingJavaScriptFromString

以下是我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';"]; 

我要的是當鏈接用戶點擊第一個注入腳本應該運行然後點擊事件的函數(callme(1)或2或3)來執行鏈接(Click1,Click2或C​​lick3)。

回答

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)); 
}; 
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';}"];