gpt4 book ai didi

css - 无论滚动位置如何,iframe 顶部的 Bootstrap 模式。如何在屏幕上定位它?

转载 作者:技术小花猫 更新时间:2023-10-29 10:19:08 25 4
gpt4 key购买 nike

在 iframe 中嵌入 Bootstrap 应用程序时,模态对话框始终在 iframe 的顶部打开,而不是屏幕顶部。例如,转到 http://getbootstrap.com/javascript/并在页面上打开示例模态。然后使用下面的示例代码将相同的 Bootstrap 页面放置在 iframe 中,找到一个模式并打开它:

<html>
<head>
</head>
<body>
<table width="100%">
<tr><td colspan="2" style="height:80px;background-color:red;vertical-align:top">Here's some header content I don't control</td></tr>
<tr><td style="width:230px;height:10080px;background-color:red;vertical-align:top">Here's some sidebar content I don't control either</td>
<td valign="top">
<iframe width="100%" height="10000px"
scrolling="no" src="http://getbootstrap.com/javascript/">
</iframe>
</td>
</tr>
</table>
</body>
</html>

Demo in fiddle

在这种情况下,如何在屏幕上定位模态框?

更新:不幸的是,我的 iFrame 无法填满屏幕,我也无法修复它,因为它需要融入页面的其余部分并且页面本身有足够的内容可以滚动。这不是我的设计,我最终打算重新设计整个东西,但这是我现在必须解决的问题。作为一个临时选项,我使用 javascript 告诉 iframe 父级滚动到弹出模式对话框的顶部。虽然这是可以接受的,但这不是期望的行为。

我在我的代码中使用了 angularjs 和 ui-bootstrap 库,但正如您在上面看到的,这是一个 Bootstrap 问题。

最佳答案

如果您的 iframe 具有相同的 document.domain作为父窗口或子域,您可以在 iframe 中使用以下代码:

    $('#myModal').on('show.bs.modal', function (e) {
if (window.top.document.querySelector('iframe')) {
$('#myModal').css('top', window.top.scrollY); //set modal position
}
});

show.bs.modal 将在您调用 $('#myModal').show() 后触发window.top.scrollY将从父窗口获取scrollY位置

如果您的 document.domain 与父域不同,您可以修改它以获取 iframe 内的 onmousedown 位置。例如:

$('#htmlElement').on('mousedown', function (event) {
event.preventDefault();
$('#myModal').data('y', event.pageY); // store the mouseY position
$('#myModal').modal('show');
});
$('#myModal').on('show.bs.modal', function (e) {
var y = $('#myModal').data('y'); // gets the mouseY position
$('#myModal').css('top', y);
});

关于css - 无论滚动位置如何,iframe 顶部的 Bootstrap 模式。如何在屏幕上定位它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24805274/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com