2015-04-13 5 views
2

Я делаю следующее:WKWebView: вызов Javascript после загрузки страницы

  • нагрузку, которую WKWebView, позволяет называть этот вид на
  • попросить пользователя ввести некоторые детали
  • спросить пользователь нажимает кнопку
  • перехватить клик по WKWebView и PUSH новый вид приложения, позволяет назвать это вид B
  • позволяют пользователю вычислить результат в новом виде, а затем вернуться к ранее загруженным WKWebView

Сейчас: Я хотел бы добавить информацию, которую я вычисленный с ранее загруженной веб-странице (вид A). Единственный способ, которым я знаю, как это сделать - загрузить javascript в метод loadView(). Однако этот метод не вызывается, когда вы перемещаться назад от просмотра B на вид на, как вид на уже был загружен. Кроме того, принудительная перезагрузка при появлении нового представления A потеряет значения в полях, которые были отредактированы пользователями.

Это «стандартный» код, который я должен вызвать скрипт:

override func loadView() { 
    super.loadView() 
    var contentController = WKUserContentController(); 
    var userScript = WKUserScript(
     source: "setValue(5)", 
     injectionTime: WKUserScriptInjectionTime.AtDocumentEnd, 
     forMainFrameOnly: true 
    ) 

    contentController.addUserScript(userScript) 


    var config = WKWebViewConfiguration() 
    config.userContentController = contentController 

    self.webView = WKWebView(frame: self.containerView!.bounds, configuration: config) 
    } 

Так что теперь мне нужна ваша помощь, чтобы понять, как вызвать метод «SetValue (customparameter)» с таможенной стоимостью (вычислено в вид B) не в loadView, но при повторном представлении.

Я могу сохранить значение в одном объекте, так что это нормально. Однако я не знаю как позвонить/ввести javascript на этом этапе. Любая помощь?

ответ

1

Используйте WKWebViewConfiguration removeAllUserScripts, а затем снова добавьте все измененные сценарии (в том числе не измененные). Не забудьте использовать общий или одиночный экземпляр WKWebViewConfiguration.

Это позволит решить любые обновления или новые wkwebview создан, чтобы последние из них

0

Как насчет:

self.webView?.evaluateJavaScript("setValue(" + customparameter + ")")

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