J'affiche une page Web dans un WKWebView. Pour masquer des éléments comme l'en-tête ou les barres latérales, j'applique JavaScript. Le problème est que j'utilise un script pour différentes pages du même site et des éléments de page différents pour différents types de pages. Si je fais quelque chose comme ça:

    let scriptURL = NSBundle.mainBundle().pathForResource("myscript", ofType: "js")
    let scriptContent = String(contentsOfFile:scriptURL!, encoding:NSUTF8StringEncoding, error: nil)
    let script = WKUserScript(source: scriptContent!, injectionTime: .AtDocumentEnd, forMainFrameOnly: true)
    config.userContentController.addUserScript(script)

document.getElementById("header").style.display = "none";

Pour un élément inexistant, il se trompe et le reste du JavaScript n'est pas appliqué.

0
empedocle 10 juil. 2015 à 22:16

2 réponses

Meilleure réponse

Vous devrez vérifier si l'élément est valide ou non avant de continuer. Au lieu de mettre des instructions if partout, vous pouvez simplement définir une fonction comme ceci:

var setElementDisplayStyle = function(id, style) {
  var element = document.getElementById(id);
  if(element) element.style.display = style;
}

Usage:

setElementDisplayStyle("header", "none");
1
heartyporridge 10 juil. 2015 à 19:29

Vouliez-vous quelque chose comme ça

var header = document.getElementById("header")
if (header) {
    header.style.display = "none";
}
0
Subbu 10 juil. 2015 à 19:27