Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在同样适用于Safari的浏览器中启用或禁用媒体查询的方法_Javascript_Html_Css_Media Queries - Fatal编程技术网

Javascript 在同样适用于Safari的浏览器中启用或禁用媒体查询的方法

Javascript 在同样适用于Safari的浏览器中启用或禁用媒体查询的方法,javascript,html,css,media-queries,Javascript,Html,Css,Media Queries,如果在一个页面上有多个媒体查询,则可以将规则的conditionText设置为启用或禁用规则: // enables a rule document.styleSheets[2].rules[0].conditionText= "(min-width: 0px)"; // disables a rule document.styleSheets[2].rules[0].conditionText= "(min-width: 99999px)"; 这适用于所有主要浏览器,但我刚刚发现Safar

如果在一个页面上有多个媒体查询,则可以将规则的conditionText设置为启用或禁用规则:

// enables a rule
document.styleSheets[2].rules[0].conditionText= "(min-width: 0px)";

// disables a rule
document.styleSheets[2].rules[0].conditionText= "(min-width: 99999px)";
这适用于所有主要浏览器,但我刚刚发现Safari除外

是否有其他方法可以启用或禁用媒体查询规则

注意:使用上述代码启用和禁用媒体查询,方法是说:“如果浏览器宽度不小于0px,则启用此查询”,然后
“除非浏览器的宽度为9999px,否则不要启用这些样式”。我找不到启用或禁用属性

这似乎有效。需要进行更多的测试:

var inclusionQuery = "(min-width: 0px)";
var exclusionQuery = "noDeviceIsEverNamedThis and (min-width: 99999px)";

function enableMediaQuery(rule) {

    try {
        rule.media.mediaText = inclusionQuery;
    }
    catch(error) {
        rule.conditionText = inclusionQuery;
    }
}

function disableMediaQuery(rule) {

    try {
        rule.media.mediaText = exclusionQuery;
    }
    catch(error) {
        rule.conditionText = exclusionQuery;
    }
}
添加了@DavidThomas中不存在的设备排除


在早期的测试中,mediaText或相关属性是只读的,但它似乎在Safari上。将更新答案。

这似乎是一种脆弱的方法,但如何修改规则以包括不推荐使用且不太可能使用的设备类型:
tty和(最小宽度:9999px)
?或者您可以使用不存在的设备类型,导致:
thisDeviceTypeDoesNotExist and(min width:9999px)
,不过,老实说,我认为更改设备类型将否定使用
min width
条件的必要性。这就是为什么我一直在寻找替代方案。在答案中添加了您的条件。老实说,我很惊讶没有API来激活/停用特定(理想名称)媒体查询。这是一个很好的功能要求。可以应用于任何规则。我不确定我有一个好的方法来解释为什么这样一个API应该存在,或者它应该有什么效用(或者扩展到包括);但是,如果您想坚持到底,并为未来版本的EcmaScript提出一个strawman/level 0建议: