我有一个使用dojo dijits构建的仪表盘。其中一个dijit是dojo日历部件。在这个dashboard中,我嵌入了一个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的引用。