2011-05-28 119 views
3

我有兩個框架,表達式在第一幀中運行並在另一個框架中調用highlightElements函數。這種表達在Firefox正常工作:Chrome和Firefox不兼容

parent.frames[0].highlightElements(lineNumbers, stringObj); 

的highlightElements功能(只爲確認):

function highlightElements(lineNumbers, stringObj) { 
    // run through the cycle and highlight them 
    //for (var ln in lineNumbers) { 
    var length = lineNumbers.length; 
    for (var ln=0; ln<length; ln++) { 
    var elements = $('.no'); 
    //for (var i in elements) { 
    var el_length = elements.length; 
    for (var i=0; i<el_length; i++) { 
     if (parseInt(elements[i].innerHTML) == lineNumbers[ln]) { 
     var badThing = "yes"; 
     for (var nextElement = elements[i].next(); 
      nextElement.className != '.no'; nextElement = elements[i].next()) { 
      if (nextElement.innerHTML == stringObj) { 
      badThing = "no"; 
      nextElement.effect('highlight', {}, 'slow'); 
      scrollIntoView(nextElement); 
      } 
     } 
     if (badThing == "yes") alert("Didn't find the object"); 
     } 
    } 
    } 
} 

但在Chrome中它產生的錯誤「遺漏的類型錯誤:對象的特性 'highlightElement'[objectDOMWindow]不是一個功能「。

如何更改表達式使其在Chrome中運行?謝謝

+2

你可以發佈這個函數嗎? – GolezTrol 2011-05-28 21:11:26

+0

你是如何聲明這個功能的?作爲框架的屬性(例如'window.highlightElements = function(){...};')或者就像function(例如'function highlightElements(){...}') – 2011-05-28 21:20:55

+0

GolezTrol:我更新了我的答案。卡爾尼科爾:是的,就像功能一樣。 – megas 2011-05-28 21:24:43

回答

1

確保兩個幀都在相同的域和協議下。如果域名/協議不匹配,Chome會阻止從框架到另一個域名的JavaScript訪問。如果你在本地工作,而不是在本地域下工作(即url是類似file:/// C:/etc/etc.html的東西),那麼它也不起作用。