- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
请帮助我回答一个关于它如何工作的简短理论,因为我想理解逻辑而不是仅仅得到答案。如果您知道任何可以为初学者解释的 Material ,请引用。我花了很多时间进行研究,但一无所获,并找到了名称或任何可以解释此行为的内容。
我的问题是并且想了解,我认为浏览器解析 html 的方式是逐行的。当它遇到<script>
时标记其他所有内容都停止(这个基本示例),同时将其传递给 js 解释器以逐行完成。完成后,会将其传回 html 解析器以继续处理页面的其余部分
所以我的问题来自下面的简短示例,当我删除 backup.js 并使用 jQuery 代替 console.log(find);
中的代码时,为什么在 backup.js 完成之前加载“find”?按预期工作,但是当从 html 中删除 jQuery 并要求通过 backup.js 添加时,这仍然是 console.log(find);
之前遇到的第一个标签。在底部,它不起作用?我收到以下错误消息:
ReferenceError: $ is not defined
var find = $('.link');
让我相信var find = $('.link');
在 backup.js 和 jQuery 完成加载之前尝试访问,但是当“find”在 backup.js 之后很长时间出现时,为什么会出现这种情况?或者我在 backup.js 中的 Javascript 代码做错了什么,它是在之后而不是之前添加的?
我有这段简短的 html:
<html>
<head>
<!--<script src="https://code.jquery.com/jquery-1.11.1.js"></script>-->
<script type="text/javascript" src="backup.js"></script>
<meta charset="UTF-8">
<title>My Web Page</title>
</head>
<body>
<p>hello</p>
<div class="link">test</div>
<script>
var find = $('.link');
console.log(find);
</script>
</body>
</html>
在 backup.js 中我有这个:
if(typeof jQuery=='undefined') {
var head= document.getElementsByTagName('head')[0];
var script= document.createElement('script');
script.type= 'text/javascript';
script.src= 'https://code.jquery.com/jquery-1.11.1.js';
head.appendChild(script);
console.log('jquery not found');
}
else{
console.log('jquery found');
}
最佳答案
在 backup.js 文件中,如果 jquery 尚不存在,则从服务器加载 jquery。通过异步调用从服务器加载某些内容意味着它不会停止页面渲染,所以会发生什么:
页面开始渲染,来到backup.js,开始从服务器加载jquery,加载jquery的同时不断渲染页面,一直走到底部,然后找到$(".link") ;
。在这行代码中,符号“$”表示 jQuery(我想在这部分代码中使用 jquery),但可能会发生 jquery 尚未完全加载的情况,因此程序会中断并告诉您 ReferenceError: $ 未定义
(或者在人类中:您试图使用 $ 但它不存在)。
要解决此问题,您可以创建一个在加载 jquery 时调用的函数:
if(typeof jQuery=='undefined') {
var head= document.getElementsByTagName('head')[0];
var script= document.createElement('script');
script.type= 'text/javascript';
script.src= 'https://code.jquery.com/jquery-1.11.1.js';
script.onload = function() {
runAfterjQueryLoad();
}
head.appendChild(script);
console.log('jquery not found');
} else {
console.log('jquery found');
}
function runAfterjQueryLoad() {
var find = $('.link');
console.log(find);
}
工作 fiddle :http://jsfiddle.net/aj803z7u/
关于页面自上而下呈现的说法是正确的,但始终要小心异步调用(也称为 ajax,以防您想在网络上搜索更多信息)。最好的学习方式就是实践。想想您想要创建的页面并尝试执行它,搜索每个小步骤的教程(您可以随时来到这里提出问题)。
关于javascript - 与 Javascript 和 jQuery 逻辑作斗争,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27039277/
我想在 64 位数字中设置各个位,并认为 uint64_t是这份工作的理想选择。我遇到了一些奇怪的问题,所以我做了一些实验: 我写了下面的测试程序: #include #include #incl
所以我知道 mapply 将按元素顺序遍历一个数组(或一系列数组)——我想知道是否有办法阻止它对某些参数执行此操作……。让我进一步解释 我有一组数据点,带有 X 和 Y 坐标……X1 X2 ……Xn
我是 android 编程的新手,我正在尝试创建一个好友列表类。 首先,我创建了一个从数据库加载对象的数组: friendArray = new Friend[NumberOfFriendsInDat
我目前正在开发一个应用程序,该应用程序定期(每 30 秒)使用 json 格式从两个指定的足球队获取英国境内的两条推文。在 json 文件中,我可以访问当前文本的每条推文的位置(曼彻斯特、布里斯托尔等
我正在尝试编写一些 javascript 来询问用户,当他们离开页面时,是否要填写调查(无论这可能多么烦人!)。我认为我的解决方案是通过此站点上的答案找到的。这是我目前拥有的代码,但似乎无法正常工作:
好吧,我有一些关于使用拆分 Pane 将我的框架分成两个区域的技巧,但我无法让它显示一些有用的东西。代码如下所示: public class Whiteboard extends JPanel { i
我在 mod_rewrite htaccess 上苦苦挣扎了至少几天,但仍然无法解决这个问题。 我想在我的网站上强制使用 HTTPS SSL,但仅限于网络外部。 我有这样的东西: RewriteCon
我有一个非常简单的 XML 文件,需要用 xmlstarlet 解析(我在 Windows 下): IDENTIFYER 2013-01-25T11:15:
关闭。这个问题是opinion-based .它目前不接受答案。 想改善这个问题吗?更新问题,以便可以通过 editing this post 用事实和引文回答问题. 2年前关闭。 Improve t
我真的很努力地处理类、扩展和实现。 在 android 中,我想创建一个首选项屏幕并检查用户输入。 因此,我可以使用名为preferences.class的文件,并使用以下类执行我需要的所有操作:
我正在尝试运行 hello world boost python example乍一看一切都很好。我得到以下输出 >bjam ...patience... ...patience... ...foun
抱歉打扰大家了,这让我很痛苦。这是代码: char buf[500]; sprintf(buf,"D:\\Important\\Calibration\\Results\\model_%i.xml",
我最近了解了在 C++ 中使用反向迭代器的正确方法(特别是当您需要删除一个时)。 (参见 this question 和 this one。) 你应该这样做: typedef std::vector
我在使用 flex-layout 时遇到了一些问题。 我的代码通常如下所示: 我希望第二个 flex d
我遇到一个问题,一个简单的函数在到达 std::cin 请求时似乎终止了。编译器不会抛出任何警告或错误,也不会发生运行时错误,程序只会返回到主菜单。 片段: #include #include u
好的,希望这对您来说应该很容易。我是 git、BitBucket 的新手,也是版本控制的新手,我会遗漏一些对您来说很明显的东西。 所以这就是我所做的:我在我的机器上安装了 git 并设置了我的全局变量
我正在处理一个需要高度自动化的 Oracle 过程,因此我正在使用动态 SQL。我刚开始使用动态 SQL。 我正在使用 varchar2 变量来构建需要执行的 SQL。我使用了 dbms_output
我正在学习 python 和 Kivy,并且我真的很难理解如何从 Kivy GUI 调用函数和继续函数。 这是我的.py: import csv import os import easygui im
我试图在 WebView 中显示一个用 LaTex 编写的数学公式,但我在字符“\”上挣扎:我不能写“\”,因为这是错误的,但如果我使用“\\"应用无法呈现公式。 url += "This is a
当我只有一项时,我在使用 ng-repeat 时遇到了一些问题。 这是我的 Controller 中的部分代码: Data.get('company').then(function(data){
我是一名优秀的程序员,十分优秀!