2012-09-27 61 views
1

有一個奇怪的行爲。在UIWebView我有一個javacript函數來檢測元素的位置。這一個:uiwebview javascript no return

function getPosition(element){ 

    var el = element; 
    var pos = [el.offsetLeft, el.offsetTop]; 
    var parent = el.offsetParent; 
    if (parent != el) { 
     while (parent) { 
      pos[0] += parent.offsetLeft; 
      pos[1] += parent.offsetTop; 
      parent = parent.offsetParent; 
     } 
    } 
    //alert(pos); 
    return pos; 
} 

沒什麼特別的......但是當我打電話這樣的功能:

NSString *position = [browserWebView stringByEvaluatingJavaScriptFromString:@"getPosition(document.getElementById('exampleElement'));"]; 

我得到一個空NSString回來。當我在函數中插入一個警報(現在取消註釋)時,我會在警報中獲得正確的位置!

當正確的返回值pos似乎在那裏時,爲什麼我不能返回值並且只獲取空字符串?

回答

3

這對我來說是相當簡單和神祕的同時。我不知道爲什麼,但「stringByEvaluatingJavaScriptFromString:」喜歡的JavaScript結果已經像一個字符串。要解決你的代碼只需添加一個連接()函數返回的數組:

return pos.join(); 

這將陣列連接成一個字符串,它會通過作爲一個NSString沒有問題。

我認爲警報工作的原因是它不會以類似的方式破壞顯示數據的網站。

+0

修復它。非常感謝! – user1703307

+0

沒問題,如果我的答案有效,您可能想要接受它。這就是stackoverflow的工作原理。閱讀:[接受答案如何工作?](http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work) – carlossless