Silverlight嵌入到HTML之windowless属性及运用AjaxControlToolKit时出现虚线边框的问题
2009-04-11 12:04:02 来源:WEB开发网显示如下:
按照微软提供的文档,一般情况下是不建议使用windowless模式的,因为这样silverlight就和html混合展现,会降低性能,特别是silveright程序比较复杂的时候或者高质量多媒体显示的时候。
在Windowsless模式下,一般情况下Silverlight程序周围是没有边框的,但在特定条件下,点击Silverlight程序或者Silverlight程序获得焦点后它的周围就出现了烦人的虚线边框。
我参与的一个项目里,原来将silverlight程序以windowless模式嵌入到html页面一切正常,但当页面中别的部分使用了AjaxControlToolkit的<ajaxToolkit:ModalPopupExtender />控件时,页面弹出的ajax对话框关闭后silverlight周围就出现了虚线边框。经过一番探索,发现AjaxControlToolKit对应的JS在处理ModalPopup时是将页面所有的元素的tabIndex设置为-1,从而达到不允许用户点击的目的。
disableTab: function() {
/// <summary>
/// Change the tab indices so we only tab through the modal popup
/// (and hide SELECT tags in IE6)
/// </summary>
var i = 0;
var tagElements;
var tagElementsInPopUp = new Array();
Array.clear(this._saveTabIndexes);
//Save all popup's tag in tagElementsInPopUp
for (var j = 0; j < this._tagWithTabIndex.length; j++) {
tagElements = this._foregroundElement.getElementsByTagName(this._tagWithTabIndex[j]);
for (var k = 0; k < tagElements.length; k++) {
tagElementsInPopUp[i] = tagElements[k];
i++;
}
}
i = 0;
for (var j = 0; j < this._tagWithTabIndex.length; j++) {
tagElements = document.getElementsByTagName(this._tagWithTabIndex[j]);
for (var k = 0; k < tagElements.length; k++) {
if (Array.indexOf(tagElementsInPopUp, tagElements[k]) == -1) {
this._saveTabIndexes[i] = { tag: tagElements[k], index: tagElements[k].tabIndex };
tagElements[k].tabIndex = "-1";
i++;
}
}
}
Tags:Silverlight 嵌入 HTML
编辑录入:爽爽 [复制链接] [打 印]更多精彩
赞助商链接