Javascript 如何在框架内加载jQuery?

Javascript 如何在框架内加载jQuery?,javascript,jquery,html,frameset,html-frames,Javascript,Jquery,Html,Frameset,Html Frames,我正在开发一个遗留企业应用程序,其代码是在2001年使用JavaScript、HTML、Intersystems Caché和CachéWeblink的组合编写的 这是web应用程序的index.html中存在的内容: <HTML> <HEAD> </HEAD> <FRAMESET ROWS="32,*" FRAMEBORDER="no" border="0" framespacing="0"> <FRAME SRC="

我正在开发一个遗留企业应用程序,其代码是在2001年使用JavaScript、HTML、Intersystems Caché和CachéWeblink的组合编写的

这是web应用程序的
index.html
中存在的内容:

<HTML>
<HEAD>
</HEAD>

<FRAMESET ROWS="32,*" FRAMEBORDER="no" border="0" framespacing="0">
  <FRAME
        SRC="sysnav.html"
        NAME="sysnav"
        SCROLLING="no"
        MARGINHEIGHT="10"
        MARGINWIDTH="10"
        NORESIZE>
  <FRAME
        SRC="cgi-bin/nph-mgwcgi?MGWLPN=dev&wlapp=SYSTEM&SystemAction=DisplayContentFrame"
        NAME="content"
        SCROLLING="auto"
        MARGINHEIGHT="0"
        MARGINWIDTH="10">
</FRAMESET>
<noframes>

</noframes>

</HTML>

我遇到的问题是,在
内容
框架中,该框架的HTML每次都会自动生成,但我需要在框架中包含jQuery


我能做些什么,把jQuery放到
内容
框架中?

没有,但是你可以创建一个新页面并将其包含在src中。是的,它很难看,但在某些情况下可能会起作用。
将jquery包含在新页面中,将旧页面包含在新页面中。

正如评论中提到的,只要框架位于同一个域上,jquery就可以注入框架中

香草Javascript 可以将下面这样的脚本标记添加到index.html的
元素中。它等待内容框架通过加载,然后动态添加一个带有src属性的
标记,该标记指向由托管的jQuery代码


addEventListener('DOMContentLoaded',function(){
帧['content'].addEventListener('load',function()){
var contentFrameHead=frames[“content”].document.getElementsByTagName(“head”)[0];
var newScriptTag=document.createElement('script');
newScriptTag.src='1https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js';
contentFrameHead.appendChild(newScriptTag);
});
});
请参见中的演示。尝试单击标签为“测试此框架中加载的jQuery”的按钮,查看在评论index.html的第10行时结果如何变化

在index.html中使用jQuery 也许这会带来太多的开销,但如果将jQuery添加到index.html,则可以使用jQuery助手函数。我试图利用它们来缩短代码,但在尝试使用创建脚本标记时遇到了一个问题-请参阅,以获取有关为什么这样做不起作用的详细解释

因此,使用jQuery助手函数的代码不会短很多

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>-->
<script type="text/javascript">
$(function() { //DOM-ready
  $(frames['content']).on('load', function() { //load for content frame
    var newScriptTag = document.createElement('script');
    newScriptTag.src = 'https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js';
    var contentFrameHead = frames["content"].document.getElementsByTagName("head")[0];
    contentFrameHead.appendChild(newScriptTag);
  });
});
-->
$(函数(){//DOM就绪
$(frames['content'])。在('load',function(){//load for content frames
var newScriptTag=document.createElement('script');
newScriptTag.src='1https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js';
var contentFrameHead=frames[“content”].document.getElementsByTagName(“head”)[0];
contentFrameHead.appendChild(newScriptTag);
});
});
如果内容框架具有不同的域
否则,如果内容框架的域与index.html的域不同,则可能需要一个服务器端脚本(例如,将PHP与cURL、nodeJS等一起使用)来获取该页面的内容并包含jQuery库(这本身可能很麻烦)。

没有,除非您可以修改src…哪个框架?第二个?您有权编辑该脚本吗?从技术上讲,如果页面在同一个域上并且没有达到cors限制,则可以将脚本从父页面注入子页面。但是我强烈建议你改变那些页面,而不是那样做。相关:只有当你可以改变框架的SRC,那么是的。。。您可以编写一个php脚本,使用CURL从cgi生成的脚本中获取所有html,然后插入JQuery和/或其他Javascript,然后返回整个html。嗯,如果是同一个域@NawedKhan,您可以插入脚本,这可能会导致调试噩梦,但这是完全可能的。啊,谢谢!我甚至没有想到这样的解决方案——但这正是我所需要的。
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>-->
<script type="text/javascript">
$(function() { //DOM-ready
  $(frames['content']).on('load', function() { //load for content frame
    var newScriptTag = document.createElement('script');
    newScriptTag.src = 'https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js';
    var contentFrameHead = frames["content"].document.getElementsByTagName("head")[0];
    contentFrameHead.appendChild(newScriptTag);
  });
});