在iframe中执行小部件功能

时间:2012-09-03 10:42:34

标签: javascript jquery

我正在尝试从该帧的父页面执行iframe中的函数。两者都在同一个域中 该功能是子页面上窗口小部件的一部分,并在页面加载时激活。

function(){apex.jQuery(document).apex_save_before_exit({...});};;

小部件代码的一部分:

(function($){
$.widget('ui.apex_save_before_exit', {
   options: {
      saveMessage: null,
      noWarningSelector: null,
      disableTime: null,
      ignoreChangeSelector: null
   },
   values: {
      itemChanged: false,
      promptUser: true,
      forcePrompt: false,
      debug: $('#pdebug').length !== 0
   },
   _create: function() {      
   ...
   },
   ...,
   changeDetected: function() {
      var uiw = this;
      var somethingChanged;
   ...

我知道这个小部件有效,因为当我在iframe中尝试它时(当不在iframe中时),它会像我期望的那样工作。

但我想从父页面调用changeDetected函数 注意:我正在从firebug控制台运行它们!

window.frames['cbox1346667865025'].document.apex_save_before_exit('changeDetected')

收益率

TypeError: window.frames.cbox1346667865025.document.apex_save_before_exit is not a function

使用

时相同
$('iframe.cboxIframe')[0].contentWindow.document 
or
$('iframe.cboxIframe').contents()

产量

TypeError: $("iframe.cboxIframe").contents().apex_save_before_exit is not a function

我做错了什么?它甚至可能吗?

1 个答案:

答案 0 :(得分:0)

如果iframe的内容与iframe外的域名不同,则无法执行此操作。

你也可能想要实际的元素而不是jquery对象,所以改为:

document.getElementById('myiframe').document.someFunction(arg1, arg2,...);