2013-12-20 96 views
6

我試圖使用Weinre來調試AngularJS應用程序,但風格檢測不起作用。我可以使用Weinre來選擇頁面上的元素,但它從不顯示來自CSS選擇器的相關樣式信息。我將它縮小到在分頁符Weinre樣式檢查中簡單包括AngularJS(我正在使用1.2.5版本)。我在網上發現了一些與Weinre無關的參考資料(https://issues.apache.org/jira/browse/CB-2651),但JIRA表示它已經解決。有任何想法嗎?Weinre風格檢查不適用於AngularJS

回答

1

他們通過捕捉異常並「繼續」來「固定」它。顯然這個問題是由(webkit認爲)是無效的CSS選擇器引起的。

+0

是什麼AngularJS這樣做會導致它破裂? :S – chinabuffet

+1

它似乎是[ng-cloak]等風格。 –

14

包括以下功能,和早期的網頁上運行它:

function whackWebkitMatchesSelector() { 
    var oldMatches = Element.prototype.webkitMatchesSelector 

    function newMatches(selector) { 
     try { 
      return oldMatches.call(this, selector) 
     } 
     catch (err) { 
      return false 
     } 
    } 

    Element.prototype.webkitMatchesSelector = newMatches 
} 

whackWebkitMatchesSelector() 

正如https://issues.apache.org/jira/browse/CB-6161 建議,現在我可以檢查大部分(可能不是全部)的風格。

+0

順便說一句,我有使用Sencha Touch 1和weinre的同樣的問題,這個解決方案也解決了它。這很奇怪,因爲我可以看到一些樣式,但不是全部。在index.html中應用以上功能後,所有樣式都顯示出來 - 百萬分感謝:) –

1

我知道這個問題是舊的,但我已經遇到了一個在Internet Explorer下進行調試時,11我已經更新了同以前whackWebkitMatchesSelector包括IE的情況下:

function whackWebkitMatchesSelector() { 
    var oldMatches; 

    if (Element.prototype.msMatchesSelector) { 
    oldMatches = Element.prototype.msMatchesSelector; 
    Element.prototype.msMatchesSelector = function(selector) { 
     try { return oldMatches.call(this, selector); } 
     catch (err) { return false; } 
    }; 
    } else if (Element.prototype.webkitMatchesSelector) { 
    oldMatches = Element.prototype.webkitMatchesSelector; 
    Element.prototype.webkitMatchesSelector = function(selector) { 
     try { return oldMatches.call(this, selector); } 
     catch (err) { return false; } 
    }; 
    } 
} 

whackWebkitMatchesSelector(); 
+0

快速更新,我建議您查看[Vorlon.js](http://vorlonjs.com/) –