这个Javascript对象代码有什么问题?
//下载自这个Javascript对象代码有什么问题?,javascript,Javascript,//下载自 这将通过间接暗示方法检查系统上安装的字体。起初,它在我的网页上运行得很好。我添加了更多的编码,现在它已经停止工作了。我已经删除了所有的编码,并将编码恢复到最初的工作状态,但它仍然不工作。我已经尝试过将它复制粘贴到其他页面,但它仍然无法在那里工作。但当我将所有这些代码作为文本发布并在其上运行eval()时,它突然开始工作。我快疯了。有人能解决这个问题吗?在CSS中使用字体回退不是更容易吗?看起来需要大量的JavaScript来完成CSS可以在一行中完成的事情。这是假设它是出于实际目的。
这将通过间接暗示方法检查系统上安装的
字体。起初,它在我的网页上运行得很好。我添加了更多的编码,现在它已经停止工作了。我已经删除了所有的编码,并将编码恢复到最初的工作状态,但它仍然不工作。我已经尝试过将它复制粘贴到其他页面,但它仍然无法在那里工作。但当我将所有这些代码作为文本发布并在其上运行eval()
时,它突然开始工作。我快疯了。有人能解决这个问题吗?在CSS中使用字体回退不是更容易吗?看起来需要大量的JavaScript来完成CSS可以在一行中完成的事情。这是假设它是出于实际目的。好吧,我偶然发现了真正的问题。当我在javascript中使用DOM引用时,这种情况一直发生在我身上。这是一件很小的事情,很容易被忽视,但这正是它让人更加恼火和难以捕捉的原因
我在头部部分,在body标签之前使用了这个代码。从那里剪切并在主体代码解决问题后粘贴。原因似乎是,由于此代码试图在主体部分内创建一个跨度对象,因此在主体标记之前使用此代码将导致逻辑错误,因为此时主体对象不存在。将代码重新定位到正文部分之外解决了问题,代码现在运行顺利。感谢所有贡献者。我如何使用CSS检查系统上安装的字体?请详细说明。你不需要检查。正在执行字体系列:“mycustomfont”,Arial
将解决您的问题,因为如果用户计算机上未安装“mycustomfont”,将使用arial。一个很好的解决方法是使用webfonts。没关系。我的问题现在解决了。详情如下。
var Detector = function() {
var baseFonts = ['monospace', 'sans-serif', 'serif'];
var testString = "mmmmmmmmmmlli";
var testSize = '72px';
var h = document.getElementsByTagName("body")[0];
// create a SPAN in the document to get the width of the text we use to test
var s = document.createElement("span");
s.style.fontSize = testSize;
s.innerHTML = testString;
var defaultWidth = {};
var defaultHeight = {};
for (var index in baseFonts) {
//get the default width for the three base fonts
s.style.fontFamily = baseFonts[index];
h.appendChild(s);
defaultWidth[baseFonts[index]] = s.offsetWidth; //width for the default font
defaultHeight[baseFonts[index]] = s.offsetHeight; //height for the defualt font
h.removeChild(s);
}
function detect(font) {
var detected = false;
for (var index in baseFonts) {
s.style.fontFamily = font + ',' + baseFonts[index]; // name of the font along with the base font for fallback.
h.appendChild(s);
var matched = (s.offsetWidth != defaultWidth[baseFonts[index]] || s.offsetHeight != defaultHeight[baseFonts[index]]);
h.removeChild(s);
detected = detected || matched;
}
return detected;
}
this.detect = detect;
};
var d = new Detector();
alert(d.detect("Times"));