2014-09-12 48 views
3

在Cordova應用程序中,在連接Safari的開發人員工具之前對控制檯{{log,warn,error等}}的任何調用都不會顯示在控制檯中。這使得無法調試啓動錯誤。我如何獲得這些消息?在iOS WebView中獲取啓動控制檯日誌

獎金問題:如何讓WebView停止在調試器上;與Safari連接之前的線?

回答

1

我記得有一位朋友告訴我一種方法可以讓Safari瀏覽器運行,無論應用程序是否在前臺。 I found his article這裏是詳細內容 -

要做的第一件事就是設置一個全局熱鍵 - 步驟:

  • 打開系統首選項/鍵盤
  • 在右側面板中,選擇Application Shortcuts
  • 添加熱鍵 - 使用任何你想要的鍵(我用CMD + ALT + I
  • 有相應的鍵是index.html或任何你的科爾多瓦的m艾因 HTML文件是

措施保持開放SWI

  • 啓動科爾多瓦應用
  • 打開SWI
  • 關閉SWI
  • 啓動SWI與快捷鍵在全球設立熱鍵Application Shortcuts
  • 關閉App
  • 重新打開應用程序 - 注意SWI仍在運行,並繼續爲我們提供日誌記錄/調試!

除了上面的技術,你在下面安裝了這個插件並檢查了Xcode中的日誌?

cordova plugin add org.apache.cordova.console

你使用波紋模擬器? Here is a great post on setting it up

+0

我無法使應用程序快捷方式工作。當我關閉應用程序時,SWI窗口關閉。我嘗試關閉主屏幕,通過應用程序切換器關閉,關閉模擬器 - 任何這些,只要index.html框架離開範圍,SWI窗口關閉。 – 2014-09-12 16:02:15

+0

安裝'org.apache.cordova.console'後,我發現Xcode輸出沒有變化。 – 2014-09-12 16:02:36

+0

「漣漪」做iOS嗎?我只看到模擬Android設備的文檔。 – 2014-09-12 16:02:54

0

我當然可以覆蓋或包裝console.log以將日誌消息推送到一個數組,window._log

(function(){ 
    var _console = window.console; 
    window.console = {}; 
    window.$log = {}; 
    ['log', 'warn', 'error', 'debug'].forEach(function(level){ 
     window._log[level] = []; 
     window.console[level] = function(){ 
      var args = Array.prototype.slice.apply(arguments); 
      window._log[level].push(arguments); 
      _console[level].apply(_console, arguments); 
     } 
    }); 
}()); 
1

有一個很好的新工具,非常簡單,它可以解決您的問題。看看GapDebughere,它非常新,但對我很好!

它確實正在嘗試使用Safari Remote Inspector實現,特別是它在退出應用程序時不會關閉會話,因此會捕獲所有控制檯輸出。

與Android相結合也非常有趣,因爲你得到一個相應的調試兩個平臺的工具。

+1

GapDebug不再適用於iOS 10,並且沒有計劃繼續開發。 – James 2016-12-21 21:09:16

0

我放棄了,只是做了以下內容:

// At beggining 
window.logs = []; 

// Just push the logs 
window.logs.push(err) 
window.logs.push(string) 

然後,你可以通過鍵入檢查在開發者控制檯登錄屏幕上的日誌,日誌。

0

這種簡單的伎倆可能是有用的,只是在Safari中打開控制檯,然後運行:

window.location.reload() 
0

你只需要在這裏圓箭頭點擊,並重新啓動你的web應用!

Web Inspector