Ответ 1
Это похоже на то, когда одинарные кавычки в HTML стали настолько популярными? , Одинарные кавычки вокруг атрибутов в HTML есть и всегда были разрешены спецификацией. Я не думаю, что любой браузер не поймет их.
Я очень часто использую двойные кавычки в PHP, чтобы я мог интерполировать переменные, а не конкатенировать строки. В результате, когда я создаю HTML, я часто использую одинарные кавычки для установки полей тегов. Например:
$html = "<input type='text' name='address' value='$address'>";
Теперь для меня это более читаемо, чем
$html = "<input type=\"text\" name=\"address\" value=\"$address\">";
или
$html = '<input type="text" name="address" values="' . $address . '">' ;
Из кратких поисков я слышал, как люди говорили, что одиночные кавычки для полей HTML не распознаются КАЖДОМ браузером. Таким образом, мне интересно, какие браузеры будут иметь проблемы с распознаванием одного кавычки HTML?
Это похоже на то, когда одинарные кавычки в HTML стали настолько популярными? , Одинарные кавычки вокруг атрибутов в HTML есть и всегда были разрешены спецификацией. Я не думаю, что любой браузер не поймет их.
Как было отмечено PhiLho, хотя широко распространено мнение о том, что одиночные кавычки не допускаются для значений атрибутов, эта вера неверна.
стандарт XML позволяет использовать одиночные и двойные кавычки вокруг значений атрибутов.
В стандарте XHTML ничего не сказано, чтобы изменить это, но связанный раздел, в котором говорится, что значения атрибутов должны быть указаны использует двойные кавычки в пример, который, вероятно, привел к этой путанице. Этот пример просто указывает, что значения атрибутов в XHTML должны соответствовать минимальному стандарту для значений атрибутов в XML, что означает, что они должны быть указаны (в отличие от простого HTML, который не заботится), но не ограничивает вас ни одним, ни двойные кавычки.
Конечно, всегда возможно, что вы столкнетесь с парсером, который не соответствует стандартам, но когда это произойдет, все ставки все равно. Поэтому лучше всего придерживаться того, что говорится в спецификации. Вот почему у нас есть спецификации, в конце концов.
Я слышал, как люди говорили, что одиночные кавычки для полей HTML не распознаются КАЖДОЙ браузером
Этот человек ошибается.
Не верьте всему, что видите в Интернете...
Смешно, я просто ответил на что-то похожее на кого-то, объявив, что одиночные кавычки недействительны в XHTML...
Ммм, я смотрю сверху во время набора текста и вижу, что Адам Н. распространяет ту же веру. Если он сможет поддержать свое утверждение, я откажусь от того, что я написал... AFAIK, XML агностик и принимает оба вида цитат. Я даже пробовал и проверял без проблем страницу XHTML с единственными кавычками.
Только проблема - это данные, поступающие в поля TEXT INPUT. Рассмотрим
<input value='it gonna break'/>
То же самое:
<input value="i say - "this is gonna be trouble" "/>
Вы не можете избежать этого, вы должны использовать htmlspecialchars
.
Я также использую одинарные кавычки в HTML, и я никогда не испытывал проблем.
Я использовал одинарные кавычки в HTML-страницах и встроенные Java-скрипты в нем, и он отлично работает. Протестировано в IE9, Chrome и Firefox - кажется, работает нормально.
<!DOCTYPE html>
<html>
<head>
<meta charset='utf-8'>
<meta http-equiv='X-UA-Compatible' content='IE=edge,chrome=1'>
<title>Bethanie Inc. data : geographically linked</title>
<script src='http://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js'></script>
<script src='https://maps.googleapis.com/maps/api/js?v=3.11&sensor=false' type='text/javascript'></script>
<script type='text/javascript'>
// check DOM Ready
$(document).ready(function() {
// execute
(function() {
/////////////// Addresses ///////////////////
var locations = new Array();
var i = 0;
locations[i++] = 'L,Riversea: Comp Site1 at Riversea,1 Wallace Lane Mosman Park WA 6012'
locations[i++] = 'L,Wearne: Comp Site2 at Wearne,1 Gibney St Cottesloe WA 6011'
locations[i++] = 'L,Beachside:Comp Site3 Beachside,629 Two Rocks Rd Yanchep WA 6035'
/////// Addresses/////////
var total_locations = i;
i = 0;
console.log('About to look up ' + total_locations + ' locations');
// map options
var options = {
zoom: 10,
center: new google.maps.LatLng(-31.982484, 115.789329),//Bethanie
mapTypeId: google.maps.MapTypeId.ROADMAP,
mapTypeControl: true
};
// init map
console.log('Initialise map...');
var map = new google.maps.Map(document.getElementById('map_canvas'), options);
// use the Google API to translate addresses to GPS coordinates
//(See Limits: https://developers.google.com/maps/documentation/geocoding/#Limits)
var geocoder = new google.maps.Geocoder();
if (geocoder) {
console.log('Got a new instance of Google Geocoder object');
// Call function 'createNextMarker' every second
var myVar = window.setInterval(function(){createNextMarker()}, 700);
function createNextMarker() {
if (i < locations.length)
{
var customer = locations[i];
var parts = customer.split(','); // split line into parts (fields)
var type= parts.splice(0,1); // type from location line (remove)
var name = parts.splice(0,1); // name from location line(remove)
var address =parts.join(','); // combine remaining parts
console.log('Looking up ' + name + ' at address ' + address);
geocoder.geocode({ 'address': address }, makeCallback(name, type));
i++; // next location in list
updateProgressBar(i / total_locations);
} else
{
console.log('Ready looking up ' + i + ' addresses');
window.clearInterval(myVar);
}
}
function makeCallback(name,type)
{
var geocodeCallBack = function (results, status) {
if (status == google.maps.GeocoderStatus.OK) {
var longitude = results[0].geometry.location.lng();
var latitude = results[0].geometry.location.lat();
console.log('Received result: lat:' + latitude + ' long:' + longitude);
var marker = new google.maps.Marker({
position: new google.maps.LatLng(latitude, longitude),
map: map,
title: name + ' : ' + '\r\n' + results[0].formatted_address});// this is display in tool tip/ icon color
if (type=='E') {marker.setIcon('http://maps.google.com/mapfiles/ms/icons/green-dot.png')};
Поскольку я искал информацию об этом в гораздо более поздней версии спецификации, и мне потребовалось довольно много времени, чтобы найти ее, вот она:
От
HTML 5.3
Проект редакции, 18 октября 2018 г.
[...]
8.1.2.3. Атрибуты
Синтаксис значения атрибута в одинарных кавычкахИмя атрибута, за которым следуют ноль или более пробелов, за которыми следует один символ U + 003D EQUALS SIGN, за которым следуют ноль или более пробелов, за которым следует один символ U + 0027 APOSTROPHE ('), за которым следует значение атрибута, которые, в дополнение к требованиям, приведенным выше для значений атрибутов, не должны содержать никаких буквенных символов APOSTROPHE U + 0027 ('), и, наконец, после них следует второй единственный символ APOSTROPHE U + 0027 (').
В следующем примере атрибут type задается с синтаксисом значения атрибута в одинарных кавычках:
<input type='checkbox'>
Если за атрибутом, использующим синтаксис атрибута в одинарных кавычках, должен следовать другой атрибут, то между ними должен быть пробел.
http://w3c.github.io/html/single-page.html#elements-attributes
Недавно я столкнулся с проблемой оптимизации Google Search. Если есть одиночные кавычки, он, похоже, не сканирует связанные страницы.
... или просто используйте heredocs. Тогда вам не нужно беспокоиться о том, чтобы избежать чего-либо, кроме END
.
Одиночные кавычки отлично подходят для HTML, но они не делают допустимого XHTML, что может быть проблематичным, если кто-то использует браузер, который поддерживает только XHTML, но не HTML. Я не считаю, что такие браузеры существуют, хотя есть, вероятно, некоторые пользовательские агенты, которые требуют строгого XHTML.