从嵌入式 iframe 的 Parent HTML 获取 Dijit

Get Dijit from Parent HTML from embedded iframe

我有一个使用 dojo dijits 构建的仪表板。 dijit 之一是 dojo 日历小部件。 在此仪表板中,我向其中嵌入了一个 iframe。我想从 iframe 中更改日历小部件的值。 问题是因为它不仅仅是更改日历 dijit 输入框中的文本值,它还涉及调用 on change 事件。所以我正在使用以下

dijit.byId('dijit_form_DateTextBox_1').set('value', datFrom);

通过这种方式更新值并触发更改事件。

现在,因为我想在 iframe 中执行此操作,所以我需要在父 HTML 页面中获取对日历 dijit 的引用。 如果这是一个简单的 Javascript 我会使用下面的方法来找到那个 DOM 元素并更改值。

const targetNode = $('#'+divId, window.parent.document)[0];

但是由于这是 dojo,所以我无法将其作为 dijit 对象获取。有没有办法从父页面获取 dijit

由于 dataTextBox 在 iframe 中,它在不同的范围内,看起来您没有在 AMD 模式中使用 dojo。

您可以做的是从 iFrame 的 contentWidow 获取对象并像调用任何其他函数一样调用 byID(),例如

var _dijit = document.getElementById("iframeId").contentWindow.dijit;
var dateTextBox = _dijit.byId('dijit_form_DateTextBox_1');
dateTextBox.set('value', datFrom);

或者更好的是,您只需调用您自己的函数的全局引用,而不是引用 dijit。