我在我的网页上的链接中有以下代码行:
<a href="javascript:$('#comment_form').toggle('normal')" title="Comment on this post">
Run Code Online (Sandbox Code Playgroud)
这会生成一个应该弹出隐藏表单的链接.它适用于Safari,但在Firefox中,我只得到一个几乎为空的页面,只有以下文字:
[object Object]
Run Code Online (Sandbox Code Playgroud)
我确定这与jQuery函数返回的值有关,但我不确定如何修复对JavaScript函数的调用,因此它也适用于Firefox.
这是我在body标签之前想要的脚本:
<script type="text/javascript">
var vglnk = { api_url: '//api.viglink.com/api',
key: '89dcd0a12ff35d227eaaaff82503030b' };
(function(d, t) {
var s = d.createElement(t); s.type = 'text/javascript'; s.async = true;
s.src = ('https:' == document.location.protocol ? vglnk.api_url :
'//cdn.viglink.com/api') + '/vglnk.js';
var r = d.getElementsByTagName(t)[0]; r.parentNode.insertBefore(s, r);
}(document, 'script'));
</script>
Run Code Online (Sandbox Code Playgroud)
我希望这段代码能够放在"HERE"的位置
<html>
<head>
</head>
<body>
some html and stuff
HERE
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
我将如何在jQuery中进行此操作?(我是通过扩展程序执行此操作.主要是在Chrome中,但也包括FF和IE.)
任何帮助表示赞赏.
有两个与浏览器的网页初始化相关的事件.
根据我的理解,浏览器无法在DOM准备就绪(DOMContentReady被触发)之前开始渲染页面,默认情况下,脚本标记会阻止任何其他浏览器进程,直到下载并执行脚本文件.
那么为什么将script标签放在body标签的末尾呢?在我看来,当浏览器在页面的任何位置遇到脚本标记时将被阻止,因此在下载并执行脚本标记之前不会触发DOMContentReady.因此,无论脚本标记的位置如何,用户都无法看到除白色空白页之外的任何内容,直到脚本完全处理完毕.
我正在使用django-debug-toolbar(最新版本,v1.2.1),我在控制台中不断收到此错误:
Empty string passed to getElementById()
Run Code Online (Sandbox Code Playgroud)
对于jQuery中的这段代码(第2757行):
...
// HANDLE: $(#id)
} else {
elem = document.getElementById( match[2] );
...
Run Code Online (Sandbox Code Playgroud)
我单击的调试工具栏中的每个链接都会再次出现此警告.
当我注释掉我的主要jQuery源文件时,调试工具栏可以工作.此外,在Django管理员中,它工作正常,大概是因为Django管理员使用不同的方法来获取jQuery.
我试过@Carlton Gibson的答案,但这并没有解决我的问题.我也尝试过本地jQuery,从CDN和一些不同的版本到无济于事......
我尝试过不同版本的jQuery并使用文档中提供的所有可能设置django-debug-toolbar.我被困住了,我真的很喜欢这个工具,希望它适合我.
编辑
由于我收到了一些额外的评论和答案,我想我会做一个编辑来解释我尝试过的内容.我没有成功地尝试了所有建议.但是,目前,我在另一篇关于RequireJS的文章中看到了另一个错误django-debug-toolbar:
GET http://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js [HTTP/1.1 304 Not Modified 133ms]
ReferenceError: jQuery is not defined localhost:8000:119
TypeError: djdt is undefined toolbar.js:297
Empty string passed to getElementById()
Run Code Online (Sandbox Code Playgroud)
即使加载了jQuery并且我告诉django-debug-toolbar我使用我的版本(with DEBUG_TOOLBAR_CONFIG = { 'JQUERY_URL': '', }),我仍然会收到错误并且DjDT无效.这一次,它甚至没有出现因为TypeError.
编辑
这base.html是导入JS 的块.请记住,这是一个快照,它已经发生了很大的变化.
<script src="http://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js" defer></script>
<script src="//maxcdn.bootstrapcdn.com/bootstrap/3.3.1/js/bootstrap.min.js" defer></script>
Run Code Online (Sandbox Code Playgroud)
我还有一个我正在使用的返回顶部小部件可能是罪魁祸首.由于我一直在使用这段代码,我从未想过这是一个问题,但现在我怀疑它可能是.此外,由于错误与 …
通常我们将JavaScript <script>标记放在HTML文档的底部,就在结束</body>标记之前,这样做的好处是它们在DOM中已经可用的所有元素之后执行,还有更多的东西.
但是,我使用的是框架文档 1,<frameset>而不是<body>标签.我不想把它们放在<head>文档中,因为它们不能立即访问3以下的DOM元素.而且我不想<iframe>在标准身体标签中使用s 4.我试过了
<head>
<title>Framesets are interesting</title>
</head>
<frameset cols="50%,50%">
<frame id="frame-a" src="a.html">
<frame id="frame-b" src="b.html">
<script type="text/javascript">
console.log("hello world!");
console.log(document.getElementById("frame-a")); // this is what I'm after
</script>
</frameset>
Run Code Online (Sandbox Code Playgroud)
但是,脚本根本没有执行,甚至没有出现在DOM检查器中.当然,一个<frameset>可能只包含<frame>和<noframes>标签.但是,在<frame>标签之后真的没有办法让脚本执行吗?
仅供参考,将它们放置在</frameset> 有时用<body>s 完成后也不起作用.
1:是的,我知道他们已被弃用了.它们只是我项目的自然选择2,一个简洁的并排视图,显示两个文档并以复杂的方式将它们滚动在一起.
2:......之前我从未使用过它们,所以我想尝试一下.
3:这就是我最终的结果,毕竟一个onload处理程序是微不足道的.问题仍然存在,我很好奇.
4:工作正常,但需要复杂的CSS样式
我正在开发一个项目,我不明白为什么调用外部脚本不起作用。
然后我只是做了一个非常简单的页面 html,其中包括一个脚本警报,如下所示...你能告诉我问题是什么吗?我相信问题不在于代码,但还能是什么呢?
我的浏览器是最新的 Chrome,我的操作系统是 Ubuntu。我的 HTML 文件是 index.html :
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>MyPage</title>
</head>
<body>
<p>Blablabla</p>
<script type="text/javascript" src="/script.js"></script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
Javascript 文件是同一文件夹中的 script.js:
<script type="text/javascript">
alert('Hey');
</script>
Run Code Online (Sandbox Code Playgroud) 我正在尝试将 4 个 div 的 HTMLCollection 转换为数组,但我尝试的每种方法似乎都会导致数组被清空。
<div class="container">
<div class="shape" id="one"></div>
<div class="shape" id="two"></div>
<div class="shape" id="three"></div>
<div class="shape" id="four"></div>
</div>
Run Code Online (Sandbox Code Playgroud)
我尝试过的方法 - 根据上一个问题:
var shapesHC = document.getElementsByClassName('shape');
//gives HTMLCollection
var shapesArrCall = [].slice.call(shapesHC);
// returns empty array
var shapesArrHC = Array.from(shapesHC);
// returns empty array
var shapesArrHCSpread = [...shapesHC];
// returns empty array
Run Code Online (Sandbox Code Playgroud)
如果有人能指出我在这里出错的地方,我将不胜感激。
谢谢。
我是Java脚本的新手.我正在练习code.When我把我的代码放在head部分,然后我得到元素null,当我把它放在body中,但在元素之前,然后我也得到null,但如果我把它放在body中,但是在元素之后然后我得到了元素.我想问一下为什么在前两种情况下我得到null.这是我的代码
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script type="text/javascript" src="js/attributes.js"></script> // null
</head>
<body>
<script type="text/javascript" src="js/attributes.js"></script> // null
<a id="braingialink"
onclick="return showAttributes();"
href="http://www.braingia.org" >Steve Suehring's Web Site
</a>
<script type="text/javascript" src="js/attributes.js"></script> // ok
</body>
Run Code Online (Sandbox Code Playgroud)
这是我的javascript
var a1 = document.getElementById("braingialink"); //get null in first two cases
window.alert(a1.getAttribute("href"));
a1.setAttribute("href", "www.google.com");
window.alert(a1.getAttribute("href"));
function showAttributes() {
var e = document.getElementById("braingialink");
var elementList = "";
for (var element in e) {
/**
* Sometimes, especially when …Run Code Online (Sandbox Code Playgroud) IBM的网站谈论快速Web开发这里提到一个有用的骨架HTML.在模板中,脚本包含在body中而不是head中.这是一个好习惯吗?将任何库放在头部不是更好吗?
<html>
<head>
<title>Template</title>
<link href="css/bootstrap.min.css" rel="stylesheet" media="screen">
<link href="css/bootstrap-responsive.min.css" rel="stylesheet">
</head>
<body>
<!-- The main HTML will go here -->
<script src="http://code.jquery.com/jquery.js"></script>
<script src="js/bootstrap.min.js"></script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
VS
<html>
<head>
<title>Template</title>
<link href="css/bootstrap.min.css" rel="stylesheet" media="screen">
<link href="css/bootstrap-responsive.min.css" rel="stylesheet">
<script src="http://code.jquery.com/jquery.js"></script>
<script src="js/bootstrap.min.js"></script>
</head>
<body>
<!-- The main HTML will go here -->
</body>
</html>
Run Code Online (Sandbox Code Playgroud) 我使用谷歌代码来推迟加载 javascript(谷歌页面)
但我有一些内联 javascript,例如:
<script type="text/javascript">
$(function () {
alert("please work");
});
</script>
Run Code Online (Sandbox Code Playgroud)
这给了我:
未捕获的 ReferenceError: $ 未定义
我想我需要一些函数,它是在加载 jQuery 并初始化我的内联 javascripts 之后触发的。但如果有另一种方式,我会很高兴。
编辑:
你们中的一些人完全没有话题。Mahesh Sapkal 很接近。
使用此代码我没有错误,但仍然无法正常工作
<head>
<script type="text/javascript">
var MhInit = NULL;
// Add a script element as a child of the body
function downloadJSAtOnload() {
var element = document.createElement("script");
MhInit = element.src = "my_packed_scripts.js";
document.body.appendChild(element);
}
// Check for browser support of event handling capability
if (window.addEventListener)
window.addEventListener("load", downloadJSAtOnload, false);
else if (window.attachEvent)
window.attachEvent("onload", …Run Code Online (Sandbox Code Playgroud)