您可能已经知道,Safari有一个讨厌的自动填充错误,它填写电子邮件,用户名和密码字段,无论您是否设置autocomplete="off".
这是一个基本形式:
<form action="/" method="post">
<p>
<label>E-mail</label>
<input type="text" name="email" value="" />
</p>
<p>
<label>Password</label>
<input type="password" name="password" value="" />
</p>
</form>
Run Code Online (Sandbox Code Playgroud)
... Safari自动填充页面加载中的那些字段,就像它应该做的那样,做得好!
如果您放置autocomplete="off"字段和/或表单元素,Safari仍会自动填充这些字段:
<form action="/" method="post" autocomplete="off">
<p>
<label>E-mail</label>
<input type="text" name="email" value="" autocomplete="off" />
</p>
<p>
<label>Password</label>
<input type="password" name="password" value="" autocomplete="off" />
</p>
</form>
Run Code Online (Sandbox Code Playgroud)
即便这样也行不通:
<form action="/" method="post" autocomplete="off">
<p>
<label>E-mail</label>
<input type="text" name="secretfield1" value="" autocomplete="off"/>
</p>
<p>
<label>Password</label>
<input type="password" name="secretfield2" value="" autocomplete="off" />
</p>
</form>
Run Code Online (Sandbox Code Playgroud)
...因为Safari会查找这些<label>元素,如果它们包含"电子邮件","密码"等单词并继续自动填充.
Aaaahhhhha!,我想,并尝试了这个:
<form …Run Code Online (Sandbox Code Playgroud) 这个问题有很多答案,但不是一个完整的问题:
使用一个正则表达式,如何从中提取页面标题<title>Page title</title>?
在其他几种情况下,如何键入标题标签,例如:
<TITLE>Page title</TITLE>
<title>
Page title</title>
<title>
Page title
</title>
<title lang="en-US">Page title</title>
Run Code Online (Sandbox Code Playgroud)
......或上述任何组合.
它可以在自己的行上或在其他标签之间:
<head>
<title>Page title</title>
</head>
<head><title>Page title</title></head>
Run Code Online (Sandbox Code Playgroud)
提前感谢您的帮助.
UDPATE:因此,正则表达式方法可能不是最佳解决方案.哪种基于PHP的HTML解析器可以处理HTML格式良好(或不太好)的所有场景?
更新2:sp00m的正则表达式(/sf/answers/945721521/)似乎在所有情况下都有效.如果需要,我会回到这里.