为什么这个javascript在本地运行,而不是在web服务器上运行?
我的页面上有以下Javascript/jQuery:为什么这个javascript在本地运行,而不是在web服务器上运行?,javascript,jquery,Javascript,Jquery,我的页面上有以下Javascript/jQuery: <script> $("#mymarkdown").load("./LPInfo.md"); var md = markdown.toHTML($("#mymarkdown").html()); $("#mymarkdown").html(md); </script> $(“#mymarkdown”).load(“./LPInfo.md”); var md=markdown.toHTML($(“#mymark
<script>
$("#mymarkdown").load("./LPInfo.md");
var md = markdown.toHTML($("#mymarkdown").html());
$("#mymarkdown").html(md);
</script>
$(“#mymarkdown”).load(“./LPInfo.md”);
var md=markdown.toHTML($(“#mymarkdown”).html();
$(#mymarkdown”).html(md);
这一页在这里:
该页面使用引导。在呈现代码时,我在控制台中没有看到任何错误
如您所见,它并没有实现我想要的功能,即使用markdown.js将文件内容呈现为HTML
这是奇怪的部分,也是我问题的根源:
如果我以本地文件的形式打开页面,Chrome什么也不做。IE9将打开并正确呈现页面,但只有在我授予运行脚本的权限之后
两种浏览器都无法使用上述链接正确呈现页面。Firefox也有同样的结果
我承认在这一切上,我几乎是一个n00b,但我无法解释这种不一致的行为。我知道代码正在访问本地文件,但通过web服务器访问时,这应该不是问题,对吗
不管怎样,我会感激你的帮助
更新:
以下是该页面的代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>LeanTed Markdown Editor</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="">
<meta name="author" content="">
<!-- Le styles -->
<link href="css/bootstrap.min.css" rel="stylesheet">
<style>
body {
padding-top: 60px; /* 60px to make the container go all the way to the bottom of the topbar */
}
</style>
<link href="css/bootstrap-responsive.css" rel="stylesheet">
<!-- Le HTML5 shim, for IE6-8 support of HTML5 elements -->
<!--[if lt IE 9]>
<script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<!-- Le fav and touch icons -->
<link rel="shortcut icon" href="../assets/ico/favicon.ico">
<link rel="apple-touch-icon-precomposed" sizes="144x144" href="../assets/ico/apple-touch-icon-144-precomposed.png">
<link rel="apple-touch-icon-precomposed" sizes="114x114" href="../assets/ico/apple-touch-icon-114-precomposed.png">
<link rel="apple-touch-icon-precomposed" sizes="72x72" href="../assets/ico/apple-touch-icon-72-precomposed.png">
<link rel="apple-touch-icon-precomposed" href="../assets/ico/apple-touch-icon-57-precomposed.png">
</head>
<body>
<div class="navbar navbar-inverse navbar-fixed-top">
<div class="navbar-inner">
<div class="container">
<a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</a>
<a class="brand" href="#">LeanTed Markdown Editor</a>
<div class="nav-collapse collapse">
<ul class="nav">
<li><a href="hero.html">Home</a></li>
<li class="active"><a href="#">About</a></li>
<li><a href="http://www.nickhodges.com/contact.aspx">Contact</a></li>
</ul>
</div><!--/.nav-collapse -->
</div>
</div>
</div>
<div class="container">
<div id="mymarkdown"></div>
</div> <!-- /container -->
<!-- Le javascript
================================================== -->
<!-- Placed at the end of the document so the pages load faster -->
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
<script src="../assets/js/bootstrap-transition.js"></script>
<script src="../assets/js/bootstrap-alert.js"></script>
<script src="../assets/js/bootstrap-modal.js"></script>
<script src="../assets/js/bootstrap-dropdown.js"></script>
<script src="../assets/js/bootstrap-scrollspy.js"></script>
<script src="../assets/js/bootstrap-tab.js"></script>
<script src="../assets/js/bootstrap-tooltip.js"></script>
<script src="../assets/js/bootstrap-popover.js"></script>
<script src="../assets/js/bootstrap-button.js"></script>
<script src="../assets/js/bootstrap-collapse.js"></script>
<script src="../assets/js/bootstrap-carousel.js"></script>
<script src="../assets/js/bootstrap-typeahead.js"></script>
<script src="markdown.js"></script>
<script>
$("#mymarkdown").load("./LPInfo.md");
var md = markdown.toHTML($("#mymarkdown").html());
$("#mymarkdown").html(md);
</script>
</body>
</html>
倾斜标记编辑器
身体{
填充顶部:60px;/*60px,使容器一直到顶部栏的底部*/
}
$(“#mymarkdown”).load(“./LPInfo.md”);
var md=markdown.toHTML($(“#mymarkdown”).html();
$(#mymarkdown”).html(md);
问题在于,您试图在#mymarkdown
的内容完全加载到DOM(异步)之前对其运行markdown.toHTML
。使用load
的“complete”回调,它可以工作:
$("#mymarkdown").load("./LPInfo.md", function() {
var md = markdown.toHTML($("#mymarkdown").html());
$("#mymarkdown").html(md);
});
(它在本地工作的原因可能是因为lpinfo.md
几乎是即时加载的,或者是因为1.对本地主机的Ajax调用非常快,或者2.您的浏览器已经缓存了来自本地主机的文件。)看看如何通过XHR启用本地文件系统访问
您的实际问题是,这只会启动文件的异步加载。但是,即使在加载之前,您也会得到HTML内容(可能是空的?)并将其呈现为标记。不久之后,该元素将被ajax回调覆盖。使用回调参数
如果您没有加载HTML,请不要使用load
。jQuery有一个可以设置Markdown2html转换器的接口,当提供markdown文件并且需要html时,该接口会自动使用:
$.ajaxSetup({
accepts: {
"markdown": "text/x-markdown" // MIME type
},
contents: {
"markdown": /markdown/ // MIME type matcher
},
converters: {
"markdown html": markdown.toHTML
}
});
但出于您的目的,只需使用一个简单的:
这样做:
$(function () {
$.get( './LPInfo.md', function ( data ) {
$( '#mymarkdown' ).html( markdown.toHTML( data ) );
});
});
因此,代码位于DOMContentLoaded处理程序中,以确保DOM已准备就绪(因为您正在向其中注入内容)。另外,$.get
是这里合适的检索机制。您正在执行.load()
,这在您的情况下没有多大意义
使用.load()
执行的操作:
你把LPInfo.md上传到远程服务器了吗?你能发布about.html代码吗?@Matt--是的,文件在那里。它实际上显示为原始的、未经描述的标记。@davidlydbrookes--HTML上传。谢谢。我想那是某种记录。我还不能接受你的回答,因为显然还不到6分钟它工作得很好。非常感谢。@NickHodges-我还以为是9分钟。。。o、 哎呀,还剩6分钟,这意味着我问了我的问题,得到了答案,并在3分钟内解决了问题。:-)
$(function () {
$.get( './LPInfo.md', function ( data ) {
$( '#mymarkdown' ).html( markdown.toHTML( data ) );
});
});