首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在帧内加载jQuery?

如何在帧内加载jQuery?
EN

Stack Overflow用户
提问于 2017-08-18 22:01:19
回答 2查看 1.2K关注 0票数 3

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

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

代码语言:javascript
复制
<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>

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

有什么黑客/解决办法,我可以把jQuery推入content框架吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-08-19 07:02:15

正如注释中提到的那样,只要帧位于同一域中,就可以将jQuery注入到帧中。

香草Javascript

下面这样的脚本标记可以添加到index.html的index.html元素中。它等待内容帧通过addEventListener()加载,然后动态添加带有src属性的<script>标记,指向由Google托管图书馆承载的jQuery代码。

代码语言:javascript
复制
<script type="text/javascript">
window.addEventListener('DOMContentLoaded', function() {
    frames['content'].addEventListener('load', function() {
        var contentFrameHead = frames["content"].document.getElementsByTagName("head")[0];
        var newScriptTag = document.createElement('script');
        newScriptTag.src = 'https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js';
        contentFrameHead.appendChild(newScriptTag);
      });
});
</script>

请参阅在这个柱塞例子中演示的内容。尝试单击此框架中加载的Test jQuery按钮,并查看在注释index.html第10行时结果如何变化。

jQuery在index.html中的应用

可能开销太大,但是如果将jQuery添加到index.html中,则可以使用jQuery助手函数。我试图利用这些来缩短代码,但在尝试使用$()创建脚本标记时遇到了一个问题--请参阅这个答案,详细解释为什么不起作用。

因此,使用jQuery辅助函数的代码并不短得多.

代码语言:javascript
复制
<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);
  });
});

如果内容框架有不同的域

否则,如果内容帧的域与index.html的域不同,那么服务器端脚本(例如,使用cURL、nodeJS等)可能需要获取该页面的内容并包含jQuery库(这本身可能很麻烦)。

票数 4
EN

Stack Overflow用户

发布于 2017-08-18 23:03:04

不是,但您可以创建一个新页面并将其包含在src中。是的,这是丑陋的,但它可能在某些情况下起作用。在新页面中包括jquery,在新页面中包含旧页面。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45765557

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档