Когда запускается симулятор iOS, можно ли автоматически загрузить веб-инспектор?

Я использую симулятор iOS 6 с новым блестящим веб-инспектором в Safari.

Вопрос: Можно ли автоматически загружать Web Inspector при загрузке веб-приложения iOS 6?

Я использую PhoneGap/Cordova, и при запуске у меня много загружается javascript. Я широко использую console.log() для отладки и хотел бы, чтобы Web Inspector загружался после запуска приложения.

В настоящее время, когда я нажимаю «Выполнить в Xcode», приложение загружается, и я setTimeout выполняю свою первую функцию, поэтому я могу спешить в Safari и прикрепить веб-инспектор на этой странице.

Я бы предпочел удалить этот шаг и добавить автоматический шаг, который загружал бы веб-инспектор напрямую.

Любые другие решения?


person sonjz    schedule 25.10.2012    source источник


Ответы (3)


Это частичное решение. Это открывает окно отладки Safari одним щелчком мыши, что намного лучше, но не автоматически.

Откройте Script Editor на своем Mac (Command + пробел и введите в редакторе сценариев)

Вставьте в этот код:

-- `menu_click`, by Jacob Rus, September 2006
-- 
-- Accepts a list of form: `{"Finder", "View", "Arrange By", "Date"}`
-- Execute the specified menu item.  In this case, assuming the Finder 
-- is the active application, arranging the frontmost folder by date.

on menu_click(mList)
    local appName, topMenu, r

    -- Validate our input
    if mList's length < 3 then error "Menu list is not long enough"

    -- Set these variables for clarity and brevity later on
    set {appName, topMenu} to (items 1 through 2 of mList)
    set r to (items 3 through (mList's length) of mList)

    -- This overly-long line calls the menu_recurse function with
    -- two arguments: r, and a reference to the top-level menu
    tell application "System Events" to my menu_click_recurse(r, ((process appName)'s ¬
        (menu bar 1)'s (menu bar item topMenu)'s (menu topMenu)))
end menu_click

on menu_click_recurse(mList, parentObject)
    local f, r

    -- `f` = first item, `r` = rest of items
    set f to item 1 of mList
    if mList's length > 1 then set r to (items 2 through (mList's length) of mList)

    -- either actually click the menu item, or recurse again
    tell application "System Events"
        if mList's length is 1 then
            click parentObject's menu item f
        else
            my menu_click_recurse(r, (parentObject's (menu item f)'s (menu f)))
        end if
    end tell
end menu_click_recurse

menu_click({"Safari", "Develop", "IOS Simulator", "index.html"})

После того, как симулятор откроется, нажмите «Выполнить» на вашем скрипте (вам может потребоваться разрешить редактор скриптов в настройках в первый раз).

(Необязательно) Вы можете сохранить свои сценарии как приложение, чтобы вам не приходилось открывать редактор сценариев.

(этот ответ является более подробной версией предыдущего ответа Галатина)

person Dev01    schedule 23.04.2015
comment
Для более ленивого решения попробуйте перейти к System Preferences > Keyboard > Shortcuts и добавить ярлык приложения для Safari для заголовка меню localhost или любого другого вида вашего URL-адреса в меню «Разработка». - person Nick Farina; 30.04.2016

Сейчас середина 2014 года, и я до сих пор не знаю элегантного решения этой проблемы, но мне нравится идея добавить короткую паузу с setTimeout в код инициализации вашего приложения. Если добавление вызова setTimeout невозможно, вы также можете выполнить window.location.reload() из консоли Safari, чтобы перезапустить приложение с преимуществами полной отладки.

person sherb    schedule 30.05.2014

1) Внутри вашего обработчика OnDeviceReady добавьте отладчик;

onDeviceReady: function() {
    debugger;
    // the rest of your device ready code
}

2) Запустите приложение через xcode или cmdline.

3) Прикрепите отладчик через Safari->Develop->Simulator->Appname -> index file

4) Откройте консоль сафари и введите:

Window.location = "";

5) Приложение перезагрузится, и отладчик прикрепится к первой строке onDeviceReady().

6) Отладка как обычно.

person AngryBadger69    schedule 23.10.2015