我有一个 silverlight 用户控件,其中有一个文本框和一个按钮。此 silverlight 页面中可以有多个此类用户控件。
单击按钮时,我想启动一个 javascript 函数,该函数调用 jquery 弹出窗口以通过 iframe 打开同一应用程序中的另一个页面。在该页面中,用户进行搜索,数据需要一直传递到 silverlight 用户控件,并且需要填充文本框。
在 silverlight 中使用 HtmlPage Invoke 方法我可以调用 javascript 函数。 在此 javascript 中,我还可以调用 jquery 移动弹出窗口。但是,我无法从该函数向下返回搜索词。下面的函数立即返回空字符串。我已经使用了 setTimeout 和 defer 方法但仍然没有成功。 在弹出窗口中,当用户完成搜索单词并关闭窗口时,该弹出函数将调用名为 setSearchWord() 的父函数。该函数在此页面中设置 searchWord 变量。
var searchWord = '';
function calljquerymobilePopUp(){
$("$popupWin").popup('open');
//what should I do here such that I can make sure 'searchWord'
//variable is not empty and return it to silverlight user control.
return searchWord;
}
function setSearchWord(val){
searchWord = val;
// I always get this value but its always too late.
// In silverlight user control, I end up getting empty string
console.log(searchWord);
$("$popupWin").popup('close');
}
最佳答案
$(document).on('tap', '.btnSelectWord', function(){
if( typeof parent.setSearchWord === 'function'){
parent.setSearchWord(selectedPointId)
}else if (typeof window.opener.setSearchWord == 'function'){
window.opener.setSearchWord(selectedPointId);
}
else {
console.log('No function')
alert('No callback in parent')
}
});
关于javascript - 将一个有点复杂的 javascript 函数的值返回给 silverlight 用户控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15909534/