从其他页面加载所有<script>标记

时间:2016-07-06 10:53:23

标签: javascript jquery html ajax

我正在使用 $ .load 挂钩到一个单独的页面(同一个域)并将其拉到当前页面,如果我在整个页面上这样做,那就没问题,但是我不是,我只是为该页面中的JavaScript代码而做。我想知道是否可以将所有脚本标签从所述页面加载到当前页面?

&#xA;&#xA;

我目前正在使用以下代码:

&# xA;&#xA;

var newMessageURL = $('#lnkCompose a')。attr('href'); &#xA; $('#hiddenScriptLoad')。负载(newMessageURL);

&#XA;

2 个答案:

答案 0 :(得分:0)

该网页是在同一个域上还是您可以访问它?否则,您将遇到跨域原始策略的问题。 如果您有访问权限,唯一的方法是使用正则表达式语句或html解析器解析html并手动拉取脚本。 这听起来像一个非常黑客的方法,我不确定你为什么要这样做。

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

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

信用Javascript regex to get src url between script tag

答案 1 :(得分:0)

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

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

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

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

如果你想要只得到第二个文件的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;
    }

?>