Como adicionar jQuery no arquivo JS

133

Eu tenho algum código específico para classificar tabelas. Como o código é comum na maioria das páginas, quero criar um arquivo JS que terá o código e todas as páginas que o utilizarem poderão fazer referência a partir daí.

O problema é: Como adiciono o jQuery e o plug-in classificador de tabelas nesse arquivo .js?

Eu tentei algo assim:

document.writeln('<script src="/javascripts/jquery.js" type="text/javascript"></script>');
document.writeln('<script type="text/javascript" src="/javascripts/jquery.tablesorter.js"></script>');

mas isso parece não funcionar.

Qual é a melhor maneira de fazer isso?

Cody Gray
fonte
Vou apenas enfatizar o que alguns outros disseram em suas respostas. Esta não é realmente uma boa ideia. Se você deseja controlar quais arquivos estão incluídos em um único local, use um arquivo comum em seu servidor para escrever as tags de scripts (por exemplo, scripts.php geraria tags de script para arquivos js comuns).
Prestaul
2
mesclar o tablesorter e seu código. e use a lógica do servidor para incluir quando você precisar.
gblazex

Respostas:

171
var script = document.createElement('script');
script.src = 'https://code.jquery.com/jquery-3.4.1.min.js';
script.type = 'text/javascript';
document.getElementsByTagName('head')[0].appendChild(script);
Daniel Moura
fonte
17
Eu iria substituir http://com //um protocolo relativo. Supondo que funcione com a propriedade src.
azz
@ DerFlatulator: eu também preciso enviar uma variável para este script incluído. como fazer isso? como eu preciso para enviar uma variável itemtype = 11 ou itemtype = 22 para este arquivo js incluído e, em seguida, usá-lo no arquivo conformidade
sqlchild
Refused to load the script
Isso não funciona. Substituí a string script.scr pelo arquivo que baixei (mesmo diretório, basta colocar o nome do arquivo) e também tentei o link do host do Microsoft jQuery, mas também não funcionou.
precisa saber é o seguinte
83

Se você deseja incluir o código jQuery de outro arquivo JS, faça o seguinte:

Eu tinha o seguinte no meu arquivo HTML:

<script src="jquery-1.6.1.js"></script>
<script src="my_jquery.js"></script>

Criei um arquivo my_jquery.js separado com o seguinte:

$(document).ready(function() {
  $('a').click(function(event) {
    event.preventDefault();
    $(this).hide("slow");
  });
});
R-The_Master
fonte
44
Então, o que, ainda é uma boa resposta, e pode ajudar alguém a procurar como fazê-lo. Bem-vindo ao stackoverflow, R-The_Master!
Timothy Groote
9
@genesis φ Atualmente, este é o melhor resultado do Google jquery include jse tem 13 mil visualizações lol.
Lri 24/09
2
Maldito seja! certamente me ajudou: P. Impressionante!
Zeboidlund
8
Ajudou-me para fora ... 3 anos depois :)
tushar747
5
Quero apenas salientar: A ordem em que você inclui seus arquivos js é importante.
precisa saber é o seguinte
16

Você pode usar o código abaixo para conseguir carregar o jQuery no seu arquivo JS. Também adicionei um jQuery JSFiddle que está funcionando e está usando uma função auto-invocável.

// Anonymous "self-invoking" function
(function() {
    var startingTime = new Date().getTime();
    // Load the script
    var script = document.createElement("SCRIPT");
    script.src = 'https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js';
    script.type = 'text/javascript';
    document.getElementsByTagName("head")[0].appendChild(script);

    // Poll for jQuery to come into existance
    var checkReady = function(callback) {
        if (window.jQuery) {
            callback(jQuery);
        }
        else {
            window.setTimeout(function() { checkReady(callback); }, 20);
        }
    };

    // Start polling...
    checkReady(function($) {
        $(function() {
            var endingTime = new Date().getTime();
            var tookTime = endingTime - startingTime;
            window.alert("jQuery is loaded, after " + tookTime + " milliseconds!");
        });
    });
})();

Outra opção : - Você também pode tentar o Require.JS, que é um carregador de módulo JS.

Heemanshu Bhalla
fonte
Obrigado @StevenSpyrka pela sua valiosa apreciação.
Heemanshu Bhalla
7
/* Adding the script tag to the head as suggested before */

    var head = document.getElementsByTagName('head')[0];
    var script = document.createElement('script');
    script.type = 'text/javascript';
    script.src = "http://code.jquery.com/jquery-2.2.1.min.js";

    // Then bind the event to the callback function.
    // There are several events for cross browser compatibility.
    script.onreadystatechange = handler;
    script.onload = handler;

    // Fire the loading
    head.appendChild(script);

    function handler(){
       console.log('jquery added :)');
    }
ofir_aghai
fonte
6

Se você deseja adicionar referência a qualquer arquivo js, ​​digamos, do seu projeto, também pode adicioná-lo diretamente usando a tag reference , no Visual Studio IDE isso é tratado automaticamente arrastando e soltando o arquivo externo do Solution Explorer para o arquivo atual ( Isso funciona para marcar arquivos, arquivos .js e .css também)

/// <reference path="jquery-2.0.3.js" />
em chamas
fonte
5

O problema é que você está usando </script>o script, que está finalizando a tag de script. Tente o seguinte:

document.writeln('<script src="/javascripts/jquery.js" type="text/javascript"></sc'+'ript>');
document.writeln('<script type="text/javascript" src="/javascripts/jquery.tablesorter.js"></sc'+'ript>');
Salgado
fonte
2
essa solução não faz nada, pois a scripttag já estava sendo vista como uma sequência, não como uma marcação.
RozzA
5

Aqui está a solução que eu adotei como uma combinação de algumas soluções propostas em outros fóruns.

Dessa forma, você pode referenciar os arquivos css e outros arquivos js em um arquivo js, ​​fazendo alterações na próxima vez apenas em um único local. Entre em contato se tiver alguma dúvida.

Eu fiz o seguinte:

  1. Eu criei um js com o nome jQueryIncluder.js
  2. declarado e executado seguindo o código neste arquivo

    function getVirtualDirectory() {
      var vDir = document.location.pathname.split('/');
      return '/' + vDir[1] + '/';
    }
    
    function include_jQueryFilesToPage() {
      var siteAddress = location.protocol + '//' + document.location.hostname + getVirtualDirectory(); 
      var jqCSSFilePath =  siteAddress + 'includes/jQueryCSS/ehrgreen-theme/jquery-ui-1.8.2.custom.css';
      var jqCoreFilePath = siteAddress + 'includes/jquery-1.4.1.min.js';
      var jqUIFilePath =   siteAddress + 'includes/jquery-ui-1.8.2.custom.min.js';
      var head  = document.getElementsByTagName('head')[0]; 
    
      // jQuery CSS jnclude
      var jqCSS = 'cssIDJQ';  // you could encode the css path itself to generate id.
      if (!document.getElementById(jqCSS)) { 
        var link  = document.createElement('link'); 
        link.id  = jqCSS; 
        link.rel  = 'stylesheet'; 
        link.type = 'text/css'; 
        link.href = jqCSSFilePath; 
        link.media = 'all'; 
        head.appendChild(link); 
      } 
    
      // Core jQuery include
      var jqc = "coreFileRefIDJQ";  
      if (!document.getElementById(jqc)) 
        document.write('<scr' + 'ipt type="text/javascript" id="' + jqc + '" src="' + jqCoreFilePath + '"></scr' + 'ipt>');
    
      // jQueryUI include
      var jqUI = "uiFileRefIDJQ";  
      if (!document.getElementById(jqUI)) 
        document.write('<scr' + 'ipt type="text/javascript" id="' + jqUI + '" src="' + jqUIFilePath + '"></scr' + 'ipt>');
    }
    
    include_jQueryFilesToPage();
  3. Mencionei o arquivo jQueryIncluder.js acima em outro arquivo js ou xsl do meu projeto .Net da seguinte maneira:

    <script type="text/javascript" src="~/includes/jQueryIncluder.js"></script>

Espero que meu esforço seja apreciado.

obrigado

Faisal Mq
fonte
5

não é possível importar o arquivo js dentro de outro arquivo js

A maneira de usar o jquery dentro do js é

importe os js no html ou na página de visualização que você estiver usando, dentro da qual você incluirá o arquivo js

view.html

 <script src="<%=request.getContextPath()%>/js/jquery-1.11.3.js"></script>
 <script src="<%=request.getContextPath()%>/js/default.js"></script>

default.js

$('document').ready(function() {
    $('li#user').click(function() {
         $(this).addClass('selectedEmp');
    });
});

isso definitivamente funcionará para você

Amar Magar
fonte
4

Existe um plugin para jquery, onde você pode incluir apenas os arquivos necessários em algum outro arquivo js. Aqui está o link para ele http://tobiasz123.wordpress.com/2007/08/01/include-script-inclusion-jquery- plugin / .

Além disso, esta linha document.write gravará as tags de script no html e não no seu arquivo js.

Espero que isso possa ajudá-lo, um pouco com o seu problema

Cesar Hermosillo
fonte
1
Este link não está mais disponível
sebisnow 18/07/16
1

Se você deseja atualizar frequentemente o link do arquivo jquery para um novo arquivo de versão, em todo o site em várias páginas, de uma só vez.

Crie um arquivo javascript (.js) e insira o código abaixo, e mapeie esse arquivo javascript para todas as páginas (em vez de mapear o arquivo jquery diretamente na página); assim, quando o link do arquivo jquery for atualizado nesse arquivo javascript, ele será refletir em todo o site.

O código abaixo é testado e funciona bem!

document.write('<');
document.write('script ');
document.write('src="');
//next line is the path to jquery file
document.write('/javascripts/jquery-1.4.1.js');
document.write('" type="text/javascript"></');
document.write('script');
document.write('>');
Sam
fonte
1

Você pode criar uma base de página mestre sem os arquivos js e jquery incluídos. Coloque um espaço reservado para o conteúdo na base da página mestre na seção principal e crie uma página mestre aninhada que herda dessa base da página mestre. Agora, inclua suas inclusões em um asp: content na página mestre aninhada e, finalmente, crie uma página de conteúdo a partir dessa página mestre aninhada

Exemplo:

//in master page base    

<%@  master language="C#" autoeventwireup="true" inherits="MasterPage" codebehind="MasterPage.master.cs" %>
<html>
<head id="Head1" runat="server">
    <asp:ContentPlaceHolder runat="server" ID="cphChildHead">
        <!-- Nested Master Page include Codes will sit Here -->
    </asp:ContentPlaceHolder>
</head>
<body>
    <asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">
    </asp:ContentPlaceHolder>
    <!-- some code here -->
</body>
</html>

//in nested master page :
<%@  master language="C#" masterpagefile="~/MasterPage.master" autoeventwireup="true"
    codebehind="MasterPageLib.master.cs" inherits="sampleNameSpace" %>
<asp:Content ID="headcontent" ContentPlaceHolderID="cphChildHead" runat="server">
    <!-- includes will set here a nested master page -->
    <link href="../CSS/pwt-datepicker.css" rel="stylesheet" type="text/css" />

    <script src="../js/jquery-1.9.0.min.js" type="text/javascript"></script>

    <!-- other includes ;) -->
</asp:Content>
<asp:Content ID="bodyContent" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
    <asp:ContentPlaceHolder ID="cphChildBody" runat="server" EnableViewState="true">
        <!-- Content page code will sit Here -->
    </asp:ContentPlaceHolder>
</asp:Content>
reza akhlaghi
fonte
1

Dinâmico adicionando jQuery, CSS a partir do arquivo js. Quando adicionamos a função onload ao corpo, podemos usar o jQuery para criar uma página a partir do arquivo js.

init();

function init()
{
	addJQuery();
	addBodyAndOnLoadScript();
	addCSS();
}

function addJQuery()
{
	var head = document.getElementsByTagName( 'head' )[0];
	var scriptjQuery = document.createElement( 'script' );
	scriptjQuery.type = 'text/javascript';
	scriptjQuery.id = 'jQuery'
	scriptjQuery.src = 'https://code.jquery.com/jquery-3.4.1.min.js';
	var script = document.getElementsByTagName( 'script' )[0];
	head.insertBefore(scriptjQuery, script);
}

function addBodyAndOnLoadScript()
{
	var body = document.createElement('body')
	body.onload = 
	function()
	{
		onloadFunction();
	};
}

function addCSS()
{
	var head = document.getElementsByTagName( 'head' )[0];
	var linkCss = document.createElement( 'link' );
	linkCss.rel = 'stylesheet';
	linkCss.href = 'E:/Temporary_files/temp_css.css';
	head.appendChild( linkCss );
}

function onloadFunction()
{
	var body = $( 'body' );
	body.append('<strong>Hello world</strong>');
}
html 
{
	background-color: #f5f5dc;
}
<!DOCTYPE html>
<html lang="en">
	<head>
		<meta charset="UTF-8">
		<title>Temp Study HTML Page</title>
		<script type="text/javascript" src="E:\Temporary_files\temp_script.js"></script>
	</head>
	<body></body>
</html>

BlackBackroom
fonte
0

Se document.write ('<\ script ...') não estiver funcionando, tente document.createElement ('script') ...

Fora isso, você deve se preocupar com o tipo de site que está criando - você realmente acha que é uma boa ideia incluir arquivos .js de arquivos .js?

ryansstack
fonte
0

basta copiar o código dos dois arquivos para o seu arquivo na parte superior.

ou use algo como este http://code.google.com/p/minify/ para combinar seus arquivos dinamicamente.

Josh

Josh
fonte
0

Acho que a melhor maneira é usar isso ...

**<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>**

Isto é do projeto Codecademy 'Make an Interactive Website'.

Cassar234
fonte
0

Após muita pesquisa, resolvo esse problema com a dica da resposta ofir_aghai sobre o evento de carregamento de script.

Basicamente, precisamos usar o $código jQuery, mas não podemos usá-lo até que o jQuery seja carregado. Eu costumava document.createElement()adicionar um script para jQuery, mas o problema é que leva tempo para carregar enquanto a próxima instrução em JavaScript usando $falha. Então, eu usei a solução abaixo.

myscript.js está tendo um código que usa jQuery main.js é usado para carregar os arquivos jquery.min.js e myscript.js, certificando-se de que o jQuery esteja carregado.

código main.js.

window.load = loadJQueryFile();
var heads = document.getElementsByTagName('head');

function loadJQueryFile(){
    var jqueryScript=document.createElement('script');
    jqueryScript.setAttribute("type","text/javascript");
    jqueryScript.setAttribute("src", "/js/jquery.min.js");

    jqueryScript.onreadystatechange = handler;
    jqueryScript.onload = handler;  
    heads[0].appendChild(jqueryScript);
}

function handler(){
    var myScriptFile=document.createElement('script');
    myScriptFile.setAttribute("type","text/javascript");
    myScriptFile.setAttribute("src", "myscript.js");
    heads[0].appendChild(myScriptFile);
 }

Desta forma, funcionou. O uso loadJQueryFile()do myscript.js não funcionou. Ele passa imediatamente para a próxima instrução que usa $.

ashah
fonte
0

Acredito que o que você quer fazer ainda é incluir esse arquivo js no seu html dom; se assim for, esse apporach funcionará.

  1. Escreva seu código jquery no seu arquivo javascript como faria no seu html dom
  2. Incluir estrutura jquery antes de fechar a etiqueta do corpo
  3. Incluir arquivo javascript depois de incluir o arquivo jqyery

Exemplo: // arquivo js

     $(document).ready(function(){
     alert("jquery in js file");
     });

// html dom

    <body>
   <!--some divs content--->

   <script src=/path/to/jquery.js ></script>
   <script src=/path/to/js.js ></script>
   </body>
GeniusGeek
fonte
-2

Por que você está usando Javascript para escrever as tags de script? Basta adicionar as tags de script à sua seção principal. Portanto, seu documento será mais ou menos assim:

<html>
  <head>
    <!-- Whatever you want here -->
    <script src="/javascripts/jquery.js" type="text/javascript"></script>
    <script src="/javascripts/jquery.tablesorter.js" type="text/javascript"></script>
  </head>
  <body>
    The contents of the page.
  </body>
</html>
Sinan Taifour
fonte
2
Eu estou falando sobre arquivos JS. como adicionar referência jQuery para um arquivo JS
Jash, você não pode fazer isso. Arquivos de script não podem ser referenciados em outros arquivos de script.
Canavar
5
Sim, eles podem, Canavar. No que diz respeito ao navegador, não importa se você está adicionando tags de script no HTML ou no próprio script, porque ele interpreta o resultado da mesma forma.
Salgado
-2
var jQueryScript = document.createElement('script');  
jQueryScript.setAttribute('src','https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js');
document.head.appendChild(jQueryScript);
Ashitosh Salvi
fonte
Não publique apenas o código como resposta, mas também forneça uma explicação sobre o que seu código faz e como ele resolve o problema da pergunta. As respostas com uma explicação geralmente são mais úteis e de melhor qualidade e têm maior probabilidade de atrair votos positivos.
Mark Rotteveel