HTML5 iframe Seamless attribut
dans HTML5 l'iframe possède de nouveaux attributs comme "seamless" qui devraient supprimer les bordures et les barres de défilement. Je l'ai essayé mais ne semble pas fonctionner, je peux encore voir des barres de défilement et des frontières( j'utilise Google Chrome comme navigateur), Voici mon code:
<iframe seamless="seamless" title="google" width="600" height="300" src="http://www.google.co.uk"></iframe>
vous savez pourquoi ça ne marche pas?
encore Une question, est-il possible de cibler une section spécifique de la page à l'intérieur de l'iframe?
10 réponses
il n'est pas encore supporté correctement.
Chrome 31 (et peut-être une version antérieure) supporte certaines parties de l'attribut, mais il n'est pas entièrement supporté.
Mise À Jour: Octobre 2016
l'attribut seamless
n'existe plus. Il a été initialement lancé pour être inclus dans le premier HTML5 spec, mais a ensuite été abandonné. Un attribut non lié du même nom a fait un bref caméo dans le HTML5.1 draft, mais que trop a été abandonné mi-2016:
donc je pense que l'essentiel de tout cela tant du côté de l'implementor que du côté du Web-dev est que
seamless
comme specced ne semble pas être ce que tout le monde voulait commencer. Ou au moins c'est plus que ce que tout le monde voulait. Et de toute façon comme @annevk dit, il semble que beaucoup de cela a été depuis "surmonté par les événements" à la lumière de Shadow DOM.
en d'autres termes: purgez l'attribut seamless
de votre mémoire, et prétendez qu'il n'a jamais existé.
pour la postérité, voici ma réponse originale d'il y a cinq ans:
réponse originale: avril 2011
cet attribut est actuellement en mode brouillon. Pour cette raison, aucun des navigateurs actuels soutiennent encore (comme la mise en œuvre est sujette au changement). En attendant, il est préférable d'utiliser CSS pour enlever les bordures/barres de défilement de l'iframe:
iframe[seamless]{
background-color: transparent;
border: 0px none transparent;
padding: 0px;
overflow: hidden;
}
il y a plus dans l'attribut seamless que ce qui peut être ajouté avec CSS: une partie du raisonnement derrière l'attribut était permettre au contenu imbriqué d'hériter des mêmes styles appliqués à l'iframe (agir comme si le document imbriqué était un grand imbriqué à l'intérieur de l'élément, par exemple).
enfin, les versions D'Internet Explorer (8 et antérieures) nécessitent des attributs supplémentaires pour supprimer les bordures, les barres de défilement et la couleur de fond:
<iframe frameborder="0" allowtransparency="true" scrolling="no" src="..."></iframe>
naturellement, cela ne valide pas. Donc c'est à toi de décider comment gérer ça. Mon (difficile) approche serait de renifler la chaîne d'agents et ajouter les attributs pour les versions IE antérieures à 9.
Espère que ça aide. :)
selon la dernière recommandation W3C HTML5 (qui sera probablement la norme HTML5 finale) publiée aujourd'hui, il n'y a plus d'attribut sans soudure dans l'élément iframe . Elle semble avoir été supprimée quelque part dans le processus de normalisation.
selon caniuse.com aucun navigateur majeur ne supporte cet attribut (plus), donc vous ne devriez probablement pas l'utiliser.
il est possible d'utiliser l'attribut semless en ce moment, ici j'ai trouvé un article Allemand http://www.solife.cc/blog/html5-iframe-attribut-seamless-beispiele.html
et voici une autre présentation sur ce sujet: http://benvinegar.github.com/seamless-talk/
Vous devez utiliser la fenêtre.méthode postMessage pour communiquer entre le parent et l'iframe.
j'ai pensé que cela pourrait être utile à quelqu'un:
dans la version 32 de chrome, une bordure de 2 pixels apparaît automatiquement autour des iframes sans l'attribut seamless. Il peut être facilement supprimé en ajoutant cette règle CSS:
iframe:not([seamless]) { border:none; }
Chrome utilise le même sélecteur avec ces styles utilisateur-agent par défaut:
iframe:not([seamless]) {
border: 2px inset;
border-image-source: initial;
border-image-slice: initial;
border-image-width: initial;
border-image-outset: initial;
border-image-repeat: initial;
}
iO8 a supprimé soutien pour l'iframe transparente attribut.
- testé dans Safari, HomeScreen, new WKWebView et UIWebView.
détails complets et examen du rendement des autres iOS 8 modifications:
il suffit d'écrire
sans soudure
dans votre code. Il n'est pas nécessaire de:
sans soudure = "sans soudure
je viens de le découvrir moi-même.
EDIT-cela ne supprime pas les barres de défilement. Étrangement
scrolling= " no" semble fonctionner en html5. J'ai essayé d'utiliser le dépassement la fonction de style en ligne tel que recommandé par l'html5, mais cela ne fonctionne pas pour moi.
utilisez l'attribut frameborder sur votre iframe et définissez-le à frameborder=" 0". Qui produit l'apparence transparente. Maintenant tu dis peut-être que je veux que l'iframe imbriqué contrôle plutôt que j'ai des barres de défilement. Ensuite, vous devez créer un fichier de script JavaScript qui calcule la hauteur moins les en-têtes et définit la hauteur. Debounce est un plugin javascript nécessaire pour s'assurer que redimensionner fonctionne correctement dans les navigateurs plus anciens et parfois chrome. Cela vous mènera dans la bonne direction.
toujours à 2014 sans couture iframe n'est pas entièrement pris en charge par tous les principaux navigateurs, donc vous devriez chercher une solution alternative.
d'ici janvier 2014 sans soudure iframe n'est toujours pas pris en charge pour Firefox ni IE 11, et il est pris en charge par Chrome, Safari et Opera (la version webkit)
si vous voulez vérifier cela et plus d'options soutenues en détail, le site de test HTML5 serait une bonne option:
http://html5test.com/results/desktop.html
vous pouvez vérifier différentes plates-formes, à la section score vous pouvez cliquer sur chaque navigateur et voir ce qui est pris en charge et ce qui ne l'est pas.
Je n'ai rien trouvé qui réponde à mes exigences, mais j'ai trouvé ce script (dépend de jQuery):
https://gist.github.com/invernizzie/95182de86ea9dc5daa80
il redimensionnera l'iframe à la taille de viewport (en tenant compte d'un contenu plus large). Une amélioration pourrait être nécessaire pour utiliser la hauteur du viewport au lieu de la hauteur du contenu, dans le cas où le premier est plus grand.