2016-07-06 94 views
0

我正在使用$.load将其拉入单独的页面(同一域)并将其拉入当前页面,如果整个页面都是这样做的,那很好,但我不是,我只是为了该页面中的JavaScript代码而做它。我想知道是否有可能将所述页面中的所有脚本标签加载到当前页面中?从不同的页面加载所有<script>标签

我目前使用下面的代码:

var newMessageURL = $('#lnkCompose a').attr('href'); $('#hiddenScriptLoad').load(newMessageURL);

+0

JS部分是网页在同一个域中? –

+0

@ Nikhil.Patel是的,对不起,我会更新我的问题 – RhysO

+0

是的,每个人都以同样的方式做其他明智的你必须调用Ajax请求到该页面,并找到所有脚本标记从响应,并需要加载脚本一个接一个地在你的页面中,但是如果你的url没有那么多的重载,那么这个方法很简单,很好。 –

回答

0

据说在同一个域或页面你可以访问它?否则,您将遇到跨域来源策略问题。 如果您确实有访问权限,唯一的方法是使用正则表达式语句或html解析器解析html并手动提取脚本。 这听起来像是一个非常冒险的方法,但我不确定你为什么要这样做。

如果您有权访问,请获取页面内容,然后使用下面的内容获取脚本标记源。

text.match(/<script src="scripts\/(.*?)\.scripts\.js"><\/script>/g) 

信用Javascript regex to get src url between script tag

+0

对不起,我可能没有在我的问题中指定,但脚本标签包含代码,而不是对其的引用。我这样做是因为我正在编写一个客户端脚本,可以大幅度提高我大学的ETrack系统。见[这里](https://gitlab.com/roconnor/ETrackCleanUp) – RhysO

+0

哦,我看到你在使用Tampermonkey,它使生活变得更轻松。使用document.getElementsByTagName('script')[0] .src来获取第一个脚本的内容。映射它可以获取所有脚本源。 我知道你正在使用jQuery,但总是很高兴使用一些本机功能。 –

+0

对不起,我可能没有在我的问题中指定,但脚本标签包含代码,而不是对它的引用。 – RhysO

0
var newMessageURL = $('#lnkCompose a').attr('href');  
$('#hiddenScriptLoad').load(newMessageURL); 

上面的代码将加载所有你在第二个文件中有内容,它也将导入您有任何JavaScript代码。但是第二个文件中的代码将不起作用,除非您使用函数调用或以任何其他方式从第一页调用它们,否则不会执行任何操作。

如果你只是想分开你的js编码和html,并将它们放在两个单独的文件中,最好使用PHP将第二个文件导入到第一个文件中,这样当页面加载时客户端浏览器,它将呈现它,因为它只是一个包含两个内容的文件。恩..

<?php 
    include("script_file.js"); 
?> 

而且,如果你还想要得到唯一的第二个文件使用这样的事情

<?php 
    $Vdata = file_get_contents('path/to/YOUR/FILE.php'); 
    preg_match_all("'<script(.*?)</script>'si", $Vdata, $match); 

    foreach($match[1] as $val) 
    { 
     echo $val; 
    } 

?>