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?

62
demandé sur Diptendu 2011-01-26 15:34:52

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é.

28
répondu delphi 2013-12-04 21:37:25

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. :)

112
répondu Alhadis 2016-10-04 01:33:51

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.

54
répondu Dynalon 2014-10-29 13:13:58

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.

6
répondu volf 2012-08-04 13:10:35

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;
}
2
répondu Shahar 2014-01-27 14:14:03

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:

2
répondu Tony O'Hagan 2014-09-23 12:09:21

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.

0
répondu Yagisanatode 2013-01-07 03:13:05

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.

0
répondu Alex Williams 2013-09-19 17:47:20

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.

0
répondu Juan Carlos Alpizar Chinchilla 2014-02-04 18:20:17

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.

0
répondu Esteban 2014-11-11 20:25:42