在本文中,我们将带你了解JS文件中加载jquery.js(JS文件添加其他JS文件)在这篇文章中,我们将为您详细介绍JS文件中加载jquery.js(JS文件添加其他JS文件)的方方面面,并解答js文
在本文中,我们将带你了解JS文件中加载jquery.js(JS文件添加其他JS文件)在这篇文章中,我们将为您详细介绍JS文件中加载jquery.js(JS文件添加其他JS文件)的方方面面,并解答js文件里面加载js文件常见的疑惑,同时我们还将给您一些技巧,以帮助您实现更有效的Angular JS:如何在局部文件中加载js文件、eclipse中加放jQuery.js文件报js语法错误解决办法、javascript – 添加其他js文件会中断jQuery IntelliSense、javascript – 通过JQuery加载和卸载JS文件的最佳方法。
本文目录一览:- JS文件中加载jquery.js(JS文件添加其他JS文件)(js文件里面加载js文件)
- Angular JS:如何在局部文件中加载js文件
- eclipse中加放jQuery.js文件报js语法错误解决办法
- javascript – 添加其他js文件会中断jQuery IntelliSense
- javascript – 通过JQuery加载和卸载JS文件的最佳方法
JS文件中加载jquery.js(JS文件添加其他JS文件)(js文件里面加载js文件)
最近有一个需求:
1.在一个html中只能引入一个JS文件 不能有JS代码和其他JS文件的引入
2.这个JS文件中 还要引入其他的JS文件
3.所有JS功能都写在这个JS文件中 这些代码用到了jquery相关的东东 所以这里第一个需要解决的就是怎么引入jquery.js
在网上搜索了很多方法都不太实用,由于我自己离开WEB多年 最后向朋友询问得到以下代码
1.js
// by firefoxmmx
var script=document.createElement("script");
script.type="text/javascript";
script.src="jquery.js";
document.getElementsByTagName('head')[0].appendChild(script);
setTimeout(function(){
$(document).ready(function(){
$("#bt").click(function(){
alert('Hello World');
});
});
},100);
其中1.HTML代码如下:
<html>
<head>
<script type="text/javascript" src="1.js"></script>
</head>
<body>
<input type="button" id="bt" value="Click" />
</body>
</html>
如要测试还需要加上jquery.js 这个可自行下载
运行后点击按钮效果如图:
下面再附上网上的一些方法:
Angular JS:如何在局部文件中加载js文件
对于AngularJS来说,这很陌生,我想我打算做的术语是延迟加载。我看过几个不同的博客,但没有找到纯粹使用AngularJS的完整工作解决方案。
我知道,如果将<script src="js/process1.js"></script>
in
放到index.html中,则一切正常,我正在尝试减少在初始负载时减少的js数量。
脚本标签位于局部文件中时,它永远不会被加载,因此永远不会创建P1Ctrl。因此,当前,如果用户进入该应用程序而从未去过process55,则即使从未使用过该用户,该用户仍然在其中拥有用于process55的代码。
在执行process1路由时,是否有一种方法可以加载文件并将process1.js中创建的对象注入main中定义的应用程序中?
index.html:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Large Angular App</title> <link rel="stylesheet" href="lib/foundation/css/foundation.min.css" /></head><body ng-app="largeApp" ng-controller="LargeAppController"> <div> <a href="#/home">Home</a> | <a href="#/process1">Process1</a> </div> <br/> <br/> <br/> <ng-view>Test</ng-view> <script type="text/javascript" src="lib/jquery/jquery.min.js"></script> <script type="text/javascript" src="lib/angular/angular.js"></script> <script type="text/javascript" src="lib/angular/angular-route.js"></script> <script type="text/javascript" src="js/main.js"></script></body></html>
js / main.js:
var app = angular.module("largeApp", [''ngRoute'']);var appCtrl = app.controller("LargeAppController", function(){});app.config(function ($routeProvider, $controllerProvider) { // save references to the providers app.registerCtrl = $controllerProvider.register, $routeProvider.when(''/'', {templateUrl: ''partials/home.html''}); //Thinking I need to set up a resolve to fire off a script loader to load js. $routeProvider.when(''/process1'', {templateUrl: ''partials/process1/process1.html''}); $routeProvider.otherwise({redirectTo: ''/''});});
partials / home.html:
<div> Home Page </div>
partials / process1.html:
<script type="text/javascript" src="js/process1/Process1Controller.js"></script>Process 1 {{process1data}}
js / process1.js:
console.log("I made it here");app.registerCtrl(''Process1Controller'',function($scope){ $scope.process1data = "Hello!"; }]);
答案1
小编典典要以简单的方式实现控制器的延迟加载,您必须执行以下操作:
保存$controllerProvider.register
(将控制器添加到已经自举的AngularJS应用程序中的唯一方法)到应用程序中的变量(
main.js ):
var app = angular.module(''app'',["ngRoute"]);app.config([''$routeProvider'', ''$controllerProvider'', function($routeProvider, $controllerProvider) { // remember mentioned function for later use app.registerCtrl = $controllerProvider.register; //your routes $routeProvider.when(''/'', {templateUrl: ''partials/home.html''}); $routeProvider.when(''/process1'', {templateUrl: ''partials/process1.html''}); $routeProvider.otherwise({redirectTo: ''/''}); }]);
process1.html :
<script src="js/process1.js"></script><div ng-controller="P1Ctrl"> {{content}}</div>
现在,在 process1.js中, 您可以使用以下代码registerCtrl
:
app.registerCtrl(''P1Ctrl'', function($scope){ $scope.content = ''...''; });
index.html
可能保持不变。检查是否process1.js
正在加载您的代码(只需console.log()
在的主体中正确使用process1.js
,而不是在P1Ctrl
控制器中使用)。如果不是,请在Angular之前包含jQuery:
<script src="lib/jquery/jquery.js"></script><script src="lib/angular/angular.js"></script>
重要说明: 此方法不适用于angular 1.2.0-rc.2和1.2.0-rc.3,因为jQuery的这一小技巧不起作用。
对于更复杂(更漂亮)的解决方案(.js
文件以路由定义为依存关系),请查看以下文章:http ://ify.io/lazy-loading-in-
angularjs/-它也可与rc.2和rc.3一起使用。这是简单的实现描述的方法:http
:
//plnkr.co/edit/ukWikO5TVDtQ1l9WlrGD
eclipse中加放jQuery.js文件报js语法错误解决办法
1、eclipse设置 :
window->preferences->JavaScript->Validator->Errors/Warnings->Enable Javascript Sematic validation前面的钩子去掉;
2、.project 文件:
buildSpec 节点下的下面部分删除
<buildCommand>
<name>org.eclipse.wst.jsdt.core.javascriptValidator</name>
<arguments>
</arguments>
</buildCommand>
3、删掉原来的js文件重新复制一份, 因为之前的那份已经被项目标记错误了。
javascript – 添加其他js文件会中断jQuery IntelliSense
解决方法
在此期间,请使用以下解决方法.从Slace给您的链接安装SP1.如果您有一个名为.js的文件,并且在同一位置有一个名为-vsdoc.js的文件,那么JS intellisense将会接收-vsdoc版本.如果该脚本为空,则不会生成错误.识别导致智能感知产生失败的jQuery插件,并在其旁边放置-vsdoc版本.你不会得到UI的智能感知,但是你仍然会得到jquery和其他可以工作的插件.
您在vsdoc版本中放置的任何内容都将显示在智能感知中.如果想要,您可以将想要显示在智能感知中的数据结构的欺骗版本.
javascript – 通过JQuery加载和卸载JS文件的最佳方法
我一直很沮丧,试图找到通过jQuery加载和卸载一些JS文件的最佳方法,这是我能做的最后一件事:
$("#button").live("click", function(){
var pl = $(this).attr('rel');
$.getScript('' + siteAddress + 'min/?js=fjs'+ pl +'', function() {
$('#container').load(""+ siteAddress +"load/"+ pl +"/");
});
});
我想要做的是通过jQuery加载一些页面,同时它将包含适当的外部JS文件,用于当前页面已加载,它第一次正常工作,但是当我再次单击该按钮时,最后一个JS仍然加载,因此它会在同一页面内两次触发JS文件内的函数.
我一直尝试使用.append,也可以通过更改< script>属性和创建dynamicaly< script>元素,但仍然,我得到的是相同的结果.
解决方法:
你无法“卸载”JavaScript.一旦加载,它就被加载了.没有撤消.
但是,您可以分离事件处理程序.见:http://api.jquery.com/unbind/
但是live()是unbind()的特例.实时事件处理程序附加到文档而不是元素,因此您必须删除处理程序,如下所示:
$(document).unbind('click');
但是,这可能会删除更多处理程序,而不仅仅是有问题的处理程序,因此您可以执行以下两种操作之一:1)命名处理程序函数或2)创建命名空间.
命名处理函数
function myClickHandler(){
var pl = $(this).attr('rel');
$.getScript('' + siteAddress + 'min/?js=fjs'+ pl +'', function() {
$('#container').load(""+ siteAddress +"load/"+ pl +"/");
});
}
$("#button").live("click", myClickHandler);
// And later ...
$(document).unbind('click', myClickHandler);
命名空间
$("#button").live("click.myNamespace", function(){
var pl = $(this).attr('rel');
$.getScript('' + siteAddress + 'min/?js=fjs'+ pl +'', function() {
$('#container').load(""+ siteAddress +"load/"+ pl +"/");
});
});
// And later...
$(document).unbind('click.myNamespace');
更新:
正如@RTPMatt在下面提到的那样,die()实际上更合适.上述方法可行,但die()更易于使用.但是,使用die()时,必须将选择器与调用live()时使用的选择器完全匹配,否则结果可能无法预测:
$("#button").live("click", function(){
var pl = $(this).attr('rel');
$.getScript('' + siteAddress + 'min/?js=fjs'+ pl +'', function() {
$('#container').load(""+ siteAddress +"load/"+ pl +"/");
});
});
// And later ...
$('#button').die('click');
今天关于JS文件中加载jquery.js(JS文件添加其他JS文件)和js文件里面加载js文件的讲解已经结束,谢谢您的阅读,如果想了解更多关于Angular JS:如何在局部文件中加载js文件、eclipse中加放jQuery.js文件报js语法错误解决办法、javascript – 添加其他js文件会中断jQuery IntelliSense、javascript – 通过JQuery加载和卸载JS文件的最佳方法的相关知识,请在本站搜索。
本文标签: