WebView : changer la CSS appliquée à  une page HTML

Paisible.frPaisible.fr Membre
13:43 modifié dans API AppKit #1
Soit une page (X)HTML contenant des balises suivantes pour les styles :

<br />&lt;link rel=&quot;stylesheet&quot; href=&quot;DECO01.css&quot; type=&quot;text/css&quot;screen&quot; /&gt;<br />&lt;link rel=&quot;stylesheet&quot; href=&quot;DECO02.css&quot; type=&quot;text/css&quot;screen&quot; /&gt;<br />...<br />&lt;link rel=&quot;stylesheet&quot; href=&quot;DECOnn.css&quot; type=&quot;text/css&quot;screen&quot; /&gt;


Chaque style correspond à¡ une représentation visuelle de la page différente (Cf. www.csszengarden.com pour le principe).

Si j'ouvre ma page avec Firefox je peux basculer d'un affichage à¡ un autre en utilisant le "style switching" par le menu "View"-->"Page style".

Jusque là¡ tout va bien sauf que :
  • Sous safari je ne trouve pas de menu équivalent. Apparement cela n'existe pas. L'un d'entre vous peut-il confirmer / Infirmer ?
  • Lorsque je j'utilise une webView dans mon application cocoa, j'arrive sans problème afficher ma page et à  changer la taille, etc... Mais je n'ai rien trouvé me permettant de choisir l'un des styles de ma page comme je le ferais avec Firefox comme expliqué plus haut. Auriez-vous une idée sur la maniére dont je pourrais procéder ?


Merci

Réponses

  • NoNo Membre
    13:43 modifié #2
    Ce que fait Firefox avec les feuilles de styles n'est pas vraiment standard.
    C'est donc normal que d'autres navigateurs n'offrent pas forcément la même chose.

    Dans Firefox, la sélection du style permet apparemment de désactiver les feuilles de style à  la volée, avec réaffichage immédiat de la page.

    Tu pourras peut-être simuler ça dans une webview en manipulant les nodes <link rel="stylesheet"> par le DOM (par suppression des <link> qui ne t'intéressent pas tout en gardant celui que tu veux). Par contre, je ne sais pas si le fait de supprimer un node <link> après chargement de la page va automatiquement rafraichir l'affichage.

    A tester.
  • AliGatorAliGator Membre, Modérateur
    juillet 2008 modifié #3
    Pour info, si ça peut te servir, en javascript on fait : [tt]document.styleSheets[1].disabled = true[/tt] pour désactiver la 2e CSS (d'index 1).
    Méthode supportée par tous les navigateurs d'ailleurs, au passage (voir le site quirksmode.org).

    Et à  priori (testé sous Firefox au taf pas sur Safari mais à  priori il fait pareil sinon il l'aurait mentionné sur QM) ça recalcule l'affichage de la page à  la volée selon les nouvelles stylesheets activées.
Connectez-vous ou Inscrivez-vous pour répondre.