相关疑难解决方法(0)

为什么在Firefox中调用这个jQuery函数会失败?

我在我的网页上的链接中有以下代码行:

<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.

javascript firefox jquery

5
推荐指数
2
解决办法
5304
查看次数

使用jQuery在BODY标记结束之前放置脚本

这是我在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.)

任何帮助表示赞赏.

javascript jquery google-chrome-extension

5
推荐指数
1
解决办法
1万
查看次数

为什么将脚本标记放在body标记的末尾是好的?

有两个与浏览器的网页初始化相关的事件.

  • DOMContentReady(文档对象):解析HTML文档并构造DOM树
  • load(window object):呈现(显示)HTML文档的所有元素

根据我的理解,浏览器无法在DOM准备就绪(DOMContentReady被触发)之前开始渲染页面,默认情况下,脚本标记会阻止任何其他浏览器进程,直到下载并执行脚本文件.

那么为什么将script标签放在body标签的末尾呢?在我看来,当浏览器在页面的任何位置遇到脚本标记时将被阻止,因此在下载并执行脚本标记之前不会触发DOMContentReady.因此,无论脚本标记的位置如何,用户都无法看到除白色空白页之外的任何内容,直到脚本完全处理完毕.

javascript browser dom

5
推荐指数
1
解决办法
3678
查看次数

django-debug-toolbar在Django网站中不使用jQuery

我正在使用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)

我还有一个我正在使用的返回顶部小部件可能是罪魁祸首.由于我一直在使用这段代码,我从未想过这是一个问题,但现在我怀疑它可能是.此外,由于错误与 …

django jquery django-debug-toolbar

5
推荐指数
2
解决办法
1933
查看次数

如何将<script>放在框架集文档的"正文"中?

通常我们将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 javascript frames frameset script-tag

5
推荐指数
1
解决办法
2687
查看次数

为什么简单的 &lt;script src="..."&gt; &lt;/script&gt; 不起作用?

我正在开发一个项目,我不明白为什么调用外部脚本不起作用。

然后我只是做了一个非常简单的页面 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)

html javascript alert src

5
推荐指数
1
解决办法
4万
查看次数

如何将 HTMLCollection 转换为数组,而不将其清空?

我正在尝试将 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)

如果有人能指出我在这里出错的地方,我将不胜感激。

谢谢。

html javascript arrays dom

5
推荐指数
1
解决办法
4286
查看次数

何时何地将javascript放入html中

我是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)

javascript

4
推荐指数
1
解决办法
4517
查看次数

JavaScript是否应该进入<body>以获得性能,而不是<head>?

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)

html javascript

4
推荐指数
1
解决办法
8750
查看次数

延迟加载 JavaScript - Uncaught ReferenceError: $ is not defined

我使用谷歌代码来推迟加载 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)

javascript jquery deferred-loading asynchronous-javascript

3
推荐指数
1
解决办法
1万
查看次数