继承的页面查看器控件-iframe上的allowTransparency
-
09-12-2019 - |
题
我创建了一个自定义控件,该控件继承自 PageViewerWebPart
.
现在我需要切换 allowTransparency
属性为 = "true"
在渲染的iframe上,为IE8+中的页面启用背景透明度。
我写了一些javascript来做到这一点(但它不能正常工作),并且没有类的公开方法来向嵌套子元素添加属性。
该控件呈现以下代码层次结构:
<div>
<table>
<tr>
<td valign="top">
<div WebPartID="00000000-0000-0000-0000-000000000000">
<iframe title="Page Viewer">
<div class="UserGeneric">iframe not supported warning</div>
</iframe>
</div>
</td>
</tr>
</table>
</div>
所以这是我的javascript:
function setTransparency() {
var divs = document.getElementsByTagName("div");
var element;
var eClass;
var result;
// Get "marked" div (container for fly out)
for (var i = 0; (element = divs[i]) != null; i++) {
eClass = element.className;
if (eClass) {
if (eClass.indexOf("marked") != -1) {
result = element;
break;
}
}
}
// Find iframe contained within flyout
var ifr = findDescendantIframe(result);
if (ifr != null) {
ifr.allowTransparency = "true";
}}
// Recursive find of iframe (kind of) - if no children, no return value
function findDescendantIframe(parent) {
if (parent.hasChildNodes()) {
for (var i = 0; (child = parent.childNodes[i]) != null; i++) {
if (child.nodeName == "IFRAME") {
return child;
}
return findDescendantIframe(child);
}
}}
Javascript可能不是答案。有没有办法通过C#做到这一点,或者也许我的js有什么问题?
解决方案
我通过报废控件并使用HtmlTextWriter对象编写自己的控件来呈现相同的HTML代码来解决此问题,但添加了allowTransparency属性。