【踩坑】近来在Firefox上遇到的一些坑 - 叶宇文羚
因为工作一年多以来,做的工作基本都是和webkit
系列打交道。
先是做m站,后来做了两个app
内嵌的hybrid
项目,从来只考虑webkit
前缀和相关的伪类。
最近四个多月开始做内部的管理系统,写写样式,偶尔做个calendar
、tree
之类的组件,所有的基本只考虑新版Chrome
。从来没考虑别的问题。
最近在帮人解决firefox
下的一些兼容问题。QA
妹纸提交了一堆“bug”
。Bug
列表让人看了头疼,还有点心虚。囧。
按部就班,先打开控制台。一番研究,发现不少“bug”
都是样式的问题,并不是脚本兼容做得不好。
下面就细数下最近发现的一些bug
,算是做个备忘。以后还是得注意啊。
一)还在用 background-position-x 吗
以前看一些CSS规范,反复强调不要使用background-position-x
之类的属性。
如百度FEX
就指出:
4.6 2D 位置
[强制] 必须同时给出水平和垂直方向的位置。<span class="hljs-comment" style="color: #999988; font-style: italic;">/* good */</span> <span class="hljs-tag" style="color: #000080; font-weight: normal;">body</span> <span class="hljs-rules">{ <span class="hljs-rule"><span class="hljs-attribute" style="color: #008080;">background-position</span>:<span class="hljs-value"> center top</span></span>; <span class="hljs-comment" style="color: #999988; font-style: italic;">/* 50% 0% */</span> <span class="hljs-rule">}</span></span> <span class="hljs-comment" style="color: #999988; font-style: italic;">/* bad */</span> <span class="hljs-tag" style="color: #000080; font-weight: normal;">body</span> <span class="hljs-rules">{ <span class="hljs-rule"><span class="hljs-attribute" style="color: #008080;">background-position</span>:<span class="hljs-value"> top</span></span>; <span class="hljs-comment" style="color: #999988; font-style: italic;">/* 50% 0% */</span> <span class="hljs-rule">}</span></span>Copier après la connexion一直以来恪守这个规则,但并没有深究原因。
直到这次,真正遇到了问题。才在控制台上发现,原来background-position-x
在Firefox
下面是**无效**
的!!!
二)咦,为嘛还没开始输入文本框就验证变红了?
第二个问题。
项目有个修改密码的表单。验证不通过的话,输入框会加上红色的边框。
然后QA
妹纸在描述中说的是:
firefox
浏览器中,修改密码页面,输入框中不输入任何字符,输入框颜色也是红的
我还以为又是哪里的js写得不对呢。找了半天,还是决定从样式入手。
Firefox
的调试工具面板里,似乎只列出了样式表中的样式。浏览器默认样式的值,很难找到。我只能一点点试验。
最后发现,input
输入框好像都带了个required
属性。这是HTML5
里表示表单元素必填的属性。莫非问题出在这里?试着删除了这个属性,果然解决了。
其实,这红色的边框,并不是border
,而是box-shadow
啊。
最后得到解决方案是加上这段CSS
:
<span class="hljs-tag" style="color: #000080; font-weight: normal;">input</span><span class="hljs-pseudo">:required</span><span class="hljs-pseudo">:invalid</span> <span class="hljs-rules">{ <span class="hljs-rule"><span class="hljs-attribute" style="color: #008080;">box-shadow</span>:<span class="hljs-value"> none</span></span>; <span class="hljs-rule">}</span></span>
三)我擦,明明写了 outline: 0
可是然并卵啊
QA
妹纸还反映,登录、注册等视图的各种按钮,在Firefox
怎么点击之后,会出现黑色的边框啊?
啥?难道写代码的前端哥们儿不知道在:active
、:focus
等状态下写个outline:0
啊?这不科学。
于是又开始了神奇的探(gu)索(ge)之旅。
这次得到的答案是,这黑色的细线还真不是outline
。这是一个奇怪的伪类,::-moz-focus-inner
。简直哭死在键盘上。
于是,下面这段代码解决问题:
<span class="hljs-tag" style="color: #000080; font-weight: normal;">button</span><span class="hljs-pseudo">::-moz-focus-inner</span>, <span class="hljs-tag" style="color: #000080; font-weight: normal;">input</span><span class="hljs-attr_selector">[type="reset"]</span><span class="hljs-pseudo">::-moz-focus-inner</span>, <span class="hljs-tag" style="color: #000080; font-weight: normal;">input</span><span class="hljs-attr_selector">[type="button"]</span><span class="hljs-pseudo">::-moz-focus-inner</span>, <span class="hljs-tag" style="color: #000080; font-weight: normal;">input</span><span class="hljs-attr_selector">[type="submit"]</span><span class="hljs-pseudo">::-moz-focus-inner</span>, <span class="hljs-tag" style="color: #000080; font-weight: normal;">input</span><span class="hljs-attr_selector">[type="file"]</span> > <span class="hljs-tag" style="color: #000080; font-weight: normal;">input</span><span class="hljs-attr_selector">[type="button"]</span><span class="hljs-pseudo">::-moz-focus-inner</span> <span class="hljs-rules">{ <span class="hljs-rule"><span class="hljs-attribute" style="color: #008080;">border-color</span>:<span class="hljs-value"> transparent</span></span>; <span class="hljs-rule">}</span></span>
最后,还有些其他的
-
还有什么
clipboardData
截图粘贴的问题,见上一篇专栏【在网页中获取截图数据】Chrome和Firefox下的实战经验; -
还有些东西,当时写到注释中了,忘了。。
TO BE CONTINUED…

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Le cache de mise à jour de la page Web du compte officiel, cette chose est simple et simple, et elle est suffisamment compliquée pour en boire un pot. Vous avez travaillé dur pour mettre à jour l'article officiel du compte, mais l'utilisateur a toujours ouvert l'ancienne version. Dans cet article, jetons un coup d'œil aux rebondissements derrière cela et comment résoudre ce problème gracieusement. Après l'avoir lu, vous pouvez facilement faire face à divers problèmes de mise en cache, permettant à vos utilisateurs de toujours ressentir le contenu le plus frais. Parlons d'abord des bases. Pour le dire franchement, afin d'améliorer la vitesse d'accès, le navigateur ou le serveur stocke des ressources statiques (telles que des images, CSS, JS) ou du contenu de la page. La prochaine fois que vous y accédez, vous pouvez le récupérer directement à partir du cache sans avoir à le télécharger à nouveau, et il est naturellement rapide. Mais cette chose est aussi une épée à double tranchant. La nouvelle version est en ligne,

L'article discute de l'utilisation des attributs de validation de formulaire HTML5 comme les limites requises, motifs, min, max et longueurs pour valider la saisie de l'utilisateur directement dans le navigateur.

L'article examine les meilleures pratiques pour assurer la compatibilité des navigateurs de HTML5, en se concentrant sur la détection des fonctionnalités, l'amélioration progressive et les méthodes de test.

Cet article démontre un ajout de bordure PNG efficace aux pages Web à l'aide de CSS. Il soutient que CSS offre des performances supérieures par rapport à JavaScript ou à des bibliothèques, détaillant comment ajuster la largeur, le style et la couleur des bordures pour un effet subtil ou proéminent

L'article traite du HTML & lt; Datalist & GT; élément, qui améliore les formulaires en fournissant des suggestions de saisie semi-automatique, en améliorant l'expérience utilisateur et en réduisant les erreurs. COMMANDE COMPRES: 159

L'article traite du HTML & lt; mètre & gt; élément, utilisé pour afficher des valeurs scalaires ou fractionnaires dans une plage, et ses applications courantes dans le développement Web. Il différencie & lt; mètre & gt; De & lt; Progress & gt; et ex

Cet article explique le html5 & lt; time & gt; élément de représentation sémantique de date / heure. Il souligne l'importance de l'attribut DateTime pour la lisibilité à la machine (format ISO 8601) à côté du texte lisible par l'homme, stimulant AccessIbilit

L'article traite du HTML & lt; Progress & GT; élément, son but, son style et ses différences par rapport au & lt; mètre & gt; élément. L'objectif principal est de l'utiliser & lt; Progress & gt; pour l'achèvement des tâches et & lt; mètre & gt; pour stati
