检查 javascript 是否加载了 es5-shim.js?那是为了ie8
Check in javascript if es5-shim.js is loaded or not? That's for ie8
有没有办法定义
https://cdnjs.cloudflare.com/ajax/libs/es5-shim/4.1.0/es5-shim.js
来自
https://cdnjs.com/libraries/es5-shim
是否加载?
对于 AngularJS 你可以签入 javascript:
if(!window.angular){
//not loaded
}
对 shim 执行此操作的正确方法是什么?
谢谢。
您不应该检查垫片的存在。使用垫片背后的想法是你想使用某些方法,例如Object.keys
。当这些方法本身不可用时,您的 shim 会将它们添加到有问题的全局中,而您的代码不知道其中的区别。
您能否详细说明为什么您需要知道它已加载?
请按照以下 SO 问题的已接受答案的更新部分进行操作:
How to detect if javascript files are loaded?
以下是他的解决方案(所有功劳归T.J Crowder):
function loadScript(path, callback) {
var done = false;
var scr = document.createElement('script');
scr.onload = handleLoad;
scr.onreadystatechange = handleReadyStateChange;
scr.onerror = handleError;
scr.src = path;
function handleLoad() {
if (!done) {
done = true;
callback(path, "ok");
}
}
function handleReadyStateChange() {
var state;
if (!done) {
state = scr.readyState;
if (state === "complete") {
handleLoad();
}
}
}
function handleError() {
if (!done) {
done = true;
callback(path, "error");
}
}
}
尝试
<!--[if lt IE 9]>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/es5-shim/4.1.0/es5-shim.js"></script>
<script>String.prototype.trim || document.write('<script src="/js/es5-shim.js"><\/script>')</script>
<![endif]-->
或者如果它不起作用请告诉我。
有没有办法定义
https://cdnjs.cloudflare.com/ajax/libs/es5-shim/4.1.0/es5-shim.js
来自
https://cdnjs.com/libraries/es5-shim
是否加载?
对于 AngularJS 你可以签入 javascript:
if(!window.angular){
//not loaded
}
对 shim 执行此操作的正确方法是什么?
谢谢。
您不应该检查垫片的存在。使用垫片背后的想法是你想使用某些方法,例如Object.keys
。当这些方法本身不可用时,您的 shim 会将它们添加到有问题的全局中,而您的代码不知道其中的区别。
您能否详细说明为什么您需要知道它已加载?
请按照以下 SO 问题的已接受答案的更新部分进行操作:
How to detect if javascript files are loaded?
以下是他的解决方案(所有功劳归T.J Crowder):
function loadScript(path, callback) {
var done = false;
var scr = document.createElement('script');
scr.onload = handleLoad;
scr.onreadystatechange = handleReadyStateChange;
scr.onerror = handleError;
scr.src = path;
function handleLoad() {
if (!done) {
done = true;
callback(path, "ok");
}
}
function handleReadyStateChange() {
var state;
if (!done) {
state = scr.readyState;
if (state === "complete") {
handleLoad();
}
}
}
function handleError() {
if (!done) {
done = true;
callback(path, "error");
}
}
}
尝试
<!--[if lt IE 9]>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/es5-shim/4.1.0/es5-shim.js"></script>
<script>String.prototype.trim || document.write('<script src="/js/es5-shim.js"><\/script>')</script>
<![endif]-->
或者如果它不起作用请告诉我。