【问题标题】:How to add a function into an iframe?如何将函数添加到 iframe 中?
【发布时间】:2014-08-25 21:55:48
【问题描述】:

我想创建一个脚本来改变聊天的工作方式。聊天是使用 AJAX 技术进行的,但关键是我无法在任何级别编辑聊天。

脚本的重点是在您收到消息时添加声音。我正在考虑编辑 AJAX 函数并在那里添加一些脚本来发出声音。重点是加个JS,在原来的上面放一个新功能。

那么...如何从 iframe 外部编写的 JavaScript 创建新的 JavaScript?我知道您可以编辑 DOM 的方式,但不知道如何添加新脚本。

如果您有新想法,我可以听到另一种编辑聊天的方法,但这个(我什至不习惯)。

【问题讨论】:

  • 如果 iframe 位于不同的域中,那么您将遇到安全问题...
  • @LeeTaylor 是的,聊天在同一个域中。不用担心。
  • 那么,如果它在同一个域上,为什么不能以某种方式更改代码?
  • @LeeTaylor 这是我的错。我以为当你在 DOM 已经加载的情况下添加新脚本时,它们不会被解析,但现在我注意到这只是发生在 jQuery 上。

标签: javascript jquery ajax iframe


【解决方案1】:

Lee Taylor 说得对,你只能编辑来自同一个域的 iframe,但既然你说你可以编辑 dom,你总是可以在 dom 中添加一个 script 标签,它会立即被解析。

例如

var scriptElement = document.createElement('script');
scriptElement.textContent = 'alert(\'hello world\');';
iframe.body.appendChild(scriptElement);

【讨论】:

  • 我现在感觉有点傻。我不知道为什么我想到当你添加新的
【解决方案2】:

如果 iframe 在同一个域中,只需创建一个脚本并将其添加到头部即可。

$('<script />', {html: code}).appendTo($('iframe').contents().find('head'))

$('<script />', {src: srcUrl}).appendTo($('iframe').contents().find('head'))

来源:

https://stackoverflow.com/a/4975050/3969707

https://stackoverflow.com/a/1639342/3969707

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-09-06
    • 1970-01-01
    • 2014-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-01
    • 1970-01-01
    相关资源
    最近更新 更多