javascript - angular-ui-layout - 调整大小无法在 iframe 中正常工作

标签 javascript html angularjs iframe angular-ui

正如您在示例中看到的,使用 iframe 时调整大小无法正常工作。您可以将分离器移至左侧,但不能移至右侧。有谁知道这是为什么以及如何解决它?

<!DOCTYPE html>
<html ng-app="x">

<head>
    <meta charset="utf-8"/>
    <meta name="viewport" content="width=device-width">
    <title>UI.Layout : demo </title>

    <link rel="stylesheet" type="text/css" href="https://rawgithub.com/angular-ui/ui-layout/master/src/ui-layout.css"/>
    <style>
        .html-back {
            background: #eee;
        }
    </style>
</head>

<body>
<div ui-layout options="{ flow : 'column', disableToggle: true }">
    <div ui-layout-container size="50%" class="html-back">
        AA
    </div>
    <div ui-layout-container size="50%" class="html-back">
        <iframe style="width: 100%; height: 100%;" src=""></iframe>
    </div>
</div>

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.7.9/angular.min.js"></script>
<script src="https://rawgithub.com/angular-ui/ui-layout/master/src/ui-layout.js"></script>
<script>
    var app = angular.module("x", ["ui.layout"]);
</script>
</body>
</html>

最佳答案

问题似乎是 iframe 抢走了焦点。我通过在移动分割栏时添加覆盖 div 来设法防止这种情况发生。

<!DOCTYPE html>
<html ng-app="x">

<head>
    <meta charset="utf-8"/>
    <meta name="viewport" content="width=device-width">
    <title>UI.Layout : demo </title>

    <link rel="stylesheet" type="text/css" href="https://rawgithub.com/angular-ui/ui-layout/master/src/ui-layout.css"/>
    <style>
        .html-back {
            background: #eee;
        }
    </style>
</head>

<body>
<div ng-controller="AppController">
    <div ui-layout ui-layout-loaded options="{ flow : 'column', disableToggle: true }" id="splitViewContainer">
        <div ui-layout-container size="50%" class="html-back">
            AA
        </div>
        <div ui-layout-container class="html-back">
            <iframe style="width: 100%; height: 100%;" src=""></iframe>
        </div>
    </div>
</div>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.7.9/angular.min.js"></script>
<script src="https://rawgithub.com/angular-ui/ui-layout/master/src/ui-layout.js"></script>
<script>
    class AppController {

        constructor($document, $element, $scope) {
            this.$document = $document;
            this.$element = $element;
            this.$scope = $scope;

            this.mouseDown = this.mouseDown.bind(this);
            this.mouseUp = this.mouseUp.bind(this);

            this.$scope.$on("ui.layout.loaded", () => {
                this.splitter = this.$element.find(".ui-splitbar");
                this.splitter.on("mousedown", this.mouseDown);
            });

            this.overlay = angular.element("<div></div>");
            this.overlay.css({
                width: "100%",
                height: "100%",
                "z-index": 1,
                position: "absolute",
                top: 0,
                left: 0
            });
        }

        mouseDown() {
            if (!this.splitViewContainer) {
                this.splitViewContainer = this.$element.find("#splitViewContainer");
            }

            this.splitViewContainer.append(this.overlay);
            this.$document.one("mouseup", this.mouseUp);
        }

        mouseUp() {
            this.overlay.remove();
        }

    }


    const app = angular.module("x", ["ui.layout"]);
    app.controller("AppController", AppController);
</script>
</body>
</html>

关于javascript - angular-ui-layout - 调整大小无法在 iframe 中正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59730005/

相关文章:

javascript - 如何将多个按钮水平居中显示大小?

javascript - AngularJS UI-Router 没有进入默认状态

javascript - 如何将这个 Angular 工厂转换为 typescript ?

html - 一个子 div 必须溢出,另一个不能溢出

javascript - 如何将 ui-grid 导出到 excel 文件?

javascript - 客户端类似 Mongoose 的模式定义

javascript - 正则表达式重复捕获

javascript - 计算在键盘上按下一个键的时间

javascript - Bootstrap 3 Datetimepicker 自动提交

javascript - 在标记中心添加圆圈