Есть ли способ использовать веб-инспектор WebKit из объекта Cocoa WebView?

Я хотел бы использовать веб-инспектор WebKit в пользовательском браузере на основе WebKit в OS X. Можно ли использовать веб-инспектор для объекта веб-просмотра? Если да, то как?


person user53937    schedule 29.03.2009    source источник


Ответы (5)


Установите WebKitDeveloperExtras на YES в настройках пользователя по умолчанию при отправке -[NSUserDefaults registerDefaults:]. Конечно, это относится ко всему приложению.

Помните, что пользователь может изменить его на NO, поэтому не думайте, что это YES — если это имеет значение (например, при настройке контекстного меню), всегда проверяйте.

Предупреждение. Этот параметр не обязательно включает только инспектор элементов. Apple может расширить его в будущем, чтобы также управлять, скажем, меню отладки в строке меню. Вы можете счесть это неприемлемым риском.

person Peter Hosey    schedule 29.03.2009
comment
Это работает! Потрясающий! Примечание: он устанавливает параметр при первой загрузке, который не вступает в силу до перезапуска приложения. Не уверен, как обойти это - возможно, предоставьте файл свойств по умолчанию... - person user53937; 30.03.2009
comment
loglibrarian: Установите его раньше. Если applicationWillFinishLaunching: недостаточно хорош, установите его в функции main(). - person Peter Hosey; 30.03.2009
comment
Хорошо, я знаю, что испытываю здесь свою удачу, но есть ли способ программно запустить веб-инспектор? Возможно, частный API? - person user53937; 30.03.2009
comment
Частный API является частным, потому что когда-нибудь он исчезнет. (Или стать общедоступным без изменений, если вам ОЧЕНЬ повезло.) Если вы чувствуете себя смелым, сбросьте класс WebKit и попробуйте использовать WebInspectorWindowController. Убедитесь, что вы охраняете все, чтобы изящно потерпеть неудачу, если что-то изменится. - person Peter Hosey; 30.03.2009
comment
Или смелее (?) просто скачать исходники с WebKit.org - person uchuugaka; 20.09.2015

ДЕЙСТВИТЕЛЬНО простой способ сделать это... в терминале.... ⌘ ⬆ ☺

defaults write com.yourcompany.yourbundleid WebKitDeveloperExtras TRUE

(В OSX 10.8 вместо этого используйте defaults write com.yourcompany.yourbundleid WebKitDeveloperExtras -bool true).

ПРИМЕЧАНИЕ. Вы ДОЛЖНЫ изменить com.yourcompany.yourbundleid на ВАШИ конкретные "приложения" (или любое приложение компании bundle ID) до это сработает!**

Хорошая вещь в этом... нет НИКАК забыть вынуть его, выключить, закомментировать и т. д.... Это ЛОКАЛЬНАЯ настройка ... и может быть установлен для ЛЮБОГО приложения с поддержкой webkit... Если вы не видите меню разработчика или чего-то еще... не волнуйтесь...

Право☝ (щелкните) в веб-просмотре и перейдите к «Показать инспектор».

Кроме того, в том же духе следующее может также сделать что-то... но я не пробовал, так что не уверен..

defaults write com.yourcompany.yourbundleid IncludeDebugMenu 1

person Alex Gray    schedule 23.02.2012
comment
Мне пришлось использовать defaults write com.yourcompany.yourbundleid WebKitDeveloperExtras -bool true, чтобы это сработало. - person thomthom; 21.11.2013
comment
В наши дни он назывался Inspect Element вместо Show Inspector, но достаточно близко. - person ijoseph; 19.04.2020


в моем случае (MacOSX 10.6.5) это не сработало.

Мне пришлось сделать следующее в методе windowDidLoad моего webView WindowController:

/* Initialize webInspector. */
[[NSUserDefaults standardUserDefaults] setBool:TRUE forKey:@"WebKitDeveloperExtras"];
[[NSUserDefaults standardUserDefaults] synchronize];
person Rémy SAISSY    schedule 10.12.2010
comment
Я обнаружил, что мое приложение необходимо перезапустить, чтобы это вступило в силу. Это так или это должно произойти до создания экземпляра веб-просмотра? - person uchuugaka; 20.09.2015

Я пытался сделать это, но не мог видеть веб-инспектора.

Разве это не то же самое, что и [[NSUserDefaults standarduserDefaults] registerDefaults:[NSDictionary dictionaryWithObject:[NSNumber numberWithBool:YES] forKey:@"WebKitDeveloperExtras"]]?

person JongAm Park    schedule 09.12.2009
comment
Минус в том, что] на фронте, да. - person Peter Hosey; 09.12.2009
comment
Спасибо. Из списка рассылки webkit-dev я получил еще один ответ. Это должно быть сделано в самый ранний момент, как +initialize, или это может быть выполнено в командной строке Unix. по умолчанию пишет com.yourcompany.programname WebKitDeveloperExtras -bool true - person JongAm Park; 10.12.2009