Ответ 1
Этот подход, к сожалению, никогда не сработает, потому что переменная, сохраняющая атрибут content метатега viewport (в данном случае defaultContent
), всегда будет извлекать текущее значение. Единственный способ сделать эту работу - определить defaultContent
явно, как я сделал с customContent
.
Во-первых, давайте посмотрим, почему исходный подход не работает:
Попробуйте этот код на console
во время посещения Smashing Magazine:
defaultContent = jQuery('meta[name=viewport]').attr('content'); // store the current value in a global variable
console.log(defaultContent);
function setV(){
// override the global variable value with a scoped variable
var customContent = 'width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, user-scalable=0';
jQuery('meta[name=viewport]').attr('content', customContent);
console.log('Set viewport content to: ' + customContent);
}
function resetV(){
jQuery('meta[name=viewport]').attr('content', defaultContent);
console.log('Reset viewport content to: ' + defaultContent);
}
Убедитесь, что вы тестируете setV();
или resetV();
непосредственно на консоли, набрав их и снова нажав Run
. Как вы можете видеть, это не сработает, потому что defaultContent
установлено для получения динамического значения, которое изменяется функцией setV()
.
Чтобы заставить его работать
Как я уже говорил, если вы хотите, чтобы он работал на вашем сайте, вы могли бы определить новую переменную со значением defaultContent
(атрибут содержимого по умолчанию метатега viewport), поэтому вы правильно сохранили его с самого начала - вот так:
defaultContent = 'width=device-width, initial-scale=1.0';
customContent = 'width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, user-scalable=0';
function setV(){
jQuery('meta[name=viewport]').attr('content', customContent);
console.log('Set viewport content to: ' + customContent);
}
function resetV(){
jQuery('meta[name=viewport]').attr('content', defaultContent);
console.log('Reset viewport content to: ' + defaultContent);
}
Не то, чтобы я изменил $
на jQuery
, чтобы избежать конфликта в Smashing Magazine.