【发布时间】:2016-06-07 12:01:18
【问题描述】:
通常我在 html 中加载一个 javascript 文件:
<script src="v/0.2/strapdown.js"></script>
此文件strapdown.js 本身会加载 css 文件(第 69 - 83 行):Github > strapdown.js
// Stylesheets
var linkEl = document.createElement('link');
linkEl.href = originBase + '/themes/'+theme+'.min.css';
linkEl.rel = 'stylesheet';
document.head.appendChild(linkEl);
var linkEl = document.createElement('link');
linkEl.href = originBase + '/strapdown.css';
linkEl.rel = 'stylesheet';
document.head.appendChild(linkEl);
var linkEl = document.createElement('link');
linkEl.href = originBase + '/themes/bootstrap-responsive.min.css';
linkEl.rel = 'stylesheet';
document.head.appendChild(linkEl);
现在我想用jQuery.getScript()动态加载这个javascript文件:
$.getScript("v/0.2/strapdown.js").done( function( ) { console.log( "loaded" ) } );
javascript 文件已加载,但未加载 css 文件。
当我直接在 html 文件中声明 css 文件时,它可以工作:
<link rel="stylesheet" href="v/0.2/strapdown.css" type="text/css" media="screen" charset="utf-8">
<link rel="stylesheet" href="v/0.2/themes/cerulean.min.css" type="text/css" media="screen" charset="utf-8">
<link rel="stylesheet" href="v/0.2/themes/bootstrap-responsive.min.css" type="text/css" media="screen" charset="utf-8">
但我想动态地拥有它,就像它以前一样。
以下是缺少 css 文件的代码。可通过Github > test.html 获得
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>Jerik's this and that</title>
<meta name="description" content="Some stuff that I want to mention" />
<!-- added stylesheet manually, normaly strapdown does this for me autoamatically. Does not work now -->
<!-- link rel="stylesheet" href="v/0.2/strapdown.css" type="text/css" media="screen" charset="utf-8">
<link rel="stylesheet" href="v/0.2/themes/cerulean.min.css" type="text/css" media="screen" charset="utf-8">
<link rel="stylesheet" href="v/0.2/themes/bootstrap-responsive.min.css" type="text/css" media="screen"
charset="utf-8"-->
<script src="https://code.jquery.com/jquery-1.10.2.js"></script>
</head>
<body>
<xmp theme="cerulean" style="display:none;"></xmp>
<script type="text/javascript" charset="utf-8">
function showmd( value ) {
$( "xmp" ).html( value );
$.getScript("v/0.2/strapdown.js").done( function( ) { console.log( "loaded" ) } );
}
$.get( "readme.md", function( data ) {
showmd( data );
}, 'text');
</script>
</body>
</html>
如何通过原始脚本动态加载我通过 jQuery.getScript() 加载的 css 文件?
【问题讨论】:
-
您的实际问题是什么?您的代码已加载 css 文件。
-
我下载了github上的所有文件,在本地打开。它给出了关于不允许加载的本地资源的错误。所以,我修改了
readme.md(指向github)和strapdown.js(指向官方捷联网站)的URL,一切正常。 -
好提示。
strapdown.js根据link标签的href属性确定css 文件的位置。由于通过 jQuery 加载它时不存在,它无法找到 css 文件。它通过使用strapdown.js的完整URL以某种方式解决。
标签: javascript jquery html css getscript