以下代码在带有continue的行的Firefox控制台中引发错误.
SecurityError: The operation is insecure.
if( !sheet.cssRules ) { continue; }
Run Code Online (Sandbox Code Playgroud)
但是在Chrome和IE 11中没有...有人可以解释一下这个吗?(以及如何重新安排使其安全.)我认为这是一个跨域问题,但我仍然坚持如何正确地重新编写代码.
var bgColor = getStyleRuleValue('background-color', 'bg_selector');
function getStyleRuleValue(style, selector, sheet) {
var sheets = typeof sheet !== 'undefined' ? [sheet] : document.styleSheets;
for (var i = 0, l = sheets.length; i < l; i++) {
var sheet = sheets[i];
if( !sheet.cssRules ) { continue; }
for (var j = 0, k = sheet.cssRules.length; j < k; j++) {
var rule = sheet.cssRules[j];
if (rule.selectorText && rule.selectorText.split(',').indexOf(selector) !== …Run Code Online (Sandbox Code Playgroud) 短版: 是不是标准的行为myDiv.style.display时,我已经设置(JavaScript)的返回空白div,以display:none在主样式表,但返回"无"时,它是通过一个内嵌样式设置?
长版:
我有一些div我隐藏和取消隐藏他们的display风格,用block和之间的Javascript切换它none.他们总是从hidden(display:none)开始,我一直用内联样式设置:
<div id="anID" class="aClass" style="display:none">
stuff
</div>
Run Code Online (Sandbox Code Playgroud)
这是在none和之间切换的Javascript block.两个chOpsXXX()函数只设置divSection.style.display相反的值(以及其他内务处理):
var divSection = document.getElementById("chOpsSection" + strSectionID);
var strDisplay = divSection.style.display;
if (strDisplay == "none") {
chOpsDisplaySection(strSectionID);
} else {
chOpsHideSection(strSectionID);
}
Run Code Online (Sandbox Code Playgroud)
当我使用内联样式属性来设置初始display:none样式时,这一切都正常.
我还在主样式表中为这些div设置其他样式.所以我认为将初始状态移动display:none到所述样式表可能是有意义的.我这样做了.我不会发布它,我想你可以想象它.
但是当我这样做时,div最初是hidden(display:none),但第一次调用divSection.style.display返回一个空字符串(alert(strDisplay);返回一个空字符串,而不是null).
我上面显示的Javascript然后隐藏它(因为它不等于"none")然后下一次调用divSection.style.display返回"none"并且一切正常.(如果我inline在主样式表中将其设置为相同的行为:div初始可见,并且第一次调用divSection.style.display返回空字符串). …
我想检查外部样式表是否已加载.例如,如果它已被网络问题阻碍,那么我想知道并加载回退.这是对于jQuery的主题CSS的CDN的后备,但我更喜欢这不是特别关于那个,因为我使用的其他外部CSS我也想应用它.
link元素将在页面上,因此不能接受头部中链接元素存在的模式匹配.编辑:一个新的想法.如果通过AJAX加载样式表并检查状态代码怎么样?这是一个可行的选择吗,有人知道吗?
这是我目前的脚本:
<script type="text/javascript">
var cdn = 'http://code.jquery.com/ui/1.10.1/themes/black-tie/jquery-ui.min.css';
var ss = document.styleSheets;
for (var i = 0, max = ss.length; i < max; i++) {
var sheet = ss[i];
var rules = sheet.rules ? sheet.rules : sheet.cssRules;
if (sheet.href == cdn) {
if ( rules == null || rules.length == 0) {
var link = document.createElement("link");
link.rel = "stylesheet";
link.href = '/js/jquery-ui/1.10.1/themes/black-tie/jquery-ui.min.css';
document.getElementsByTagName("head")[0].appendChild(link);
}
break;
} …Run Code Online (Sandbox Code Playgroud)