2012-03-01 1 views
1

Я использую веб-представление в своем приложении вместо того, чтобы открывать экземпляр браузера Safari, поэтому я заметил, что расширения Safari не работают. Есть ли возможность включить эту функцию при использовании пользовательского веб-представления в приложении Cocoa?Как включить расширения Safari при использовании веб-представления

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

+0

Возможно, вызов WebView ['stringByEvaluatingJavaScriptFromString:'] (https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/WebKit/Classes/WebView_Class/Reference/Reference.html#//apple_ref/ occ/instm/WebView/stringByEvaluatingJavaScriptFromString :) из вашего WebFrameLoadDelegate ['webView: didClearWindowObject: forFrame:'] (https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/WebKit/Protocols/WebFrameLoadDelegate_Protocol/ Ссылка/Reference.html% 23 // apple_ref/occ/instm/NSObject/webView: didClearWindowObject: forFrame :) может быть как вложенный «стартовый скрипт». –

ответ

1

Невозможно использовать расширения Safari в веб-представлении.

Если ваш скрипт не слишком велик, как насчет его форматирования как букмарклета «javascript:» и настройки местоположения веб-представления?

[Редактировать: Материал ниже добавлен в ответ на запрос участника «немного больше об этой технике».]

Скажите, что вы хотите изменить цвет фона страницы на желтый и весь текст на красный. Javascript, чтобы сделать это было бы что-то вроде:

document.body.style.backgroundColor = "yellow"; 
document.body.style.color = "red !important"; 

Чтобы превратить сценарий в букмарклет, просто:

  1. завернуть его в анонимную функцию,
  2. демонтировать все разрывы строк,
  3. (необязательно) удалять любые ненужные пробелы,
  4. URL закодировать его,
  5. и префикс все это с «JavaScript:».

Так, примером может стать:

javascript:(function(){document.body.style.backgroundColor%3D%22yellow%22%3B%0Adocument.body.style.color%3D%22red%20!important%22%3B%0A}()); 

Тогда можно установить на «запустить» в WebView в window.location на эту строку букмарклет.

Here is a page с автоматическим сценарием в конвертер буклетов, который, кажется, работает.

+0

спасибо за ответ. Можете ли вы объяснить немного больше об этой технике? – willyMon

+0

См. Мой отредактированный ответ. – canisbos

Смежные вопросы