我有一个silverlight用户控件,我有一个文本框和一个按钮。这个Silverlight页面中可以有多个这些用户控件。从一个复杂的javascript函数返回一个值返回到silverlight用户控件
当点击按钮时,我想启动一个javascript函数,它调用jquery弹出窗口,通过iframe在相同的应用程序中打开另一个页面。在该页面中,用户进行搜索并将数据一直传递给silverlight用户控件,并且需要用文本框填充该数据。
在silverlight中使用HtmlPage Invoke方法我可以调用javascript函数。 在这个JavaScript内,我也可以调用jquery mobile popup。但是,我无法从该功能返回搜索词。函数立即返回空字符串。我用setTimeout和延迟方法,但仍然没有成功。 在弹出窗口中,当用户完成搜索单词并关闭窗口时,该弹出功能调用名为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');
}
我觉得我发现的一个问题是jquery mobile弹出窗口本身是异步方法。所以即使弹出窗口打开,该功能的其余部分仍然继续执行。我将不得不查看是否可以将此弹出窗口设置为模式窗口,并阻止对该函数的进一步处理,直到此窗口关闭。 – bobsov534 2013-04-09 19:09:56
重要的是要知道主页面和弹出页面的位置 - 特别是关于它们的域。这决定了应用程序架构。此外,你说“用户进行搜索”,但不清楚究竟搜索了什么或进行搜索的地方 - 客户端还是服务器端?目前还不清楚搜索结果是什么? – 2013-04-09 20:26:32
这是在.net中完成的基本搜索页面。生成的id传递给“setSearchWord”的父页面函数。这一切都有效,只是因为弹出窗体是异步的,到搜索结果返回并设置时,函数已经执行。除非变量'searchWord'被确定为非空,否则我需要一些帮助来防止函数返回。 – bobsov534 2013-04-09 20:45:24