我正在尝试编写一个简单的基于JavaScript的模式对话框。 JavaScript函数获取内容,将其放入新的iframe中并将iframe添加到页面中。迄今为止效果很好,唯一的问题是对话框(例如表格)的内容被封装,尽管页面上有足够的空间可用。获取iframe中的内容以使用尽可能多的空间,因为它需要
我希望对话框的内容(在我的情况下是一张桌子)根据需要使用尽可能多的空间,而不用包装任何线条。我在iframe和表格上尝试了很多设置width/style.width的组合。没有什么窍门。
这里代码来显示的IFRAME对话框:
function SimpleDialog() {
this.domElement = document.createElement('iframe');
this.domElement.setAttribute('style', 'border: 1px solid red; z-index: 201; position: absolute; top: 0px; left: 0px;');
this.showWithContent = function(content) {
document.getElementsByTagName('body')[0].appendChild(this.domElement);
this.domElement.contentDocument.body.appendChild(content);
var contentBody = this.domElement.contentDocument.body;
contentBody.style.padding = '0px';
contentBody.style.margin = '0px';
// Set the iframe size to the size of content.
// However, content got wrapped already.
this.domElement.style.height = content.offsetHeight + 'px';
this.domElement.style.width = content.offsetWidth + 'px';
this._centerOnScreen();
};
this._centerOnScreen = function() {
this.domElement.style.left = window.pageXOffset + (window.innerWidth/2) - (this.domElement.offsetWidth/2) + 'px';
this.domElement.style.top = window.pageYOffset + (window.innerHeight/2) - (this.domElement.offsetHeight/2) + 'px';
};
}
这里测试代码:
var table = document.createElement('table');
table.setAttribute('style', 'border: 1px solid black; width: 100%;');
table.innerHTML = "<tr><td style='font-size:40px;'>Hello world in big letters</td></tr><tr><td>second row</td></tr>";
var dialog = new SimpleDialog();
dialog.showWithContent(table);
表显示了很好地居中在页面上,但在所述第一小区的词语是包装成两条线。我如何让表使用尽可能多的空间,因为它需要(不使用white-space: nowrap
;)
在此先感谢您的任何建议!
马克
编辑:为什么我首先使用iframe的原因是为了从主网页CSS样式不影响对话框中的元素。例如,将文本颜色设置为红色的页面,但我希望对话文本保持纯黑色。
是的,他指定表占用了IFRAME宽度的100%,但指定IFRAME应该是其内容的宽度。鸡肉或鸡蛋的情况。这个表格将会是IFRAME的默认宽度的100%(一个创建的时候没有明确的宽度),然后他的IFRAME将被调整到它已经是相同的大小.... – Graza 2010-03-19 14:57:22