从嵌入的iframe中获取母公司HTML中的Dijit。

问题描述 投票:0回答:1

我有一个使用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

dojo dijit.calendar
1个回答
1
投票

由于 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的引用。

© www.soinside.com 2019 - 2024. All rights reserved.