将 iframe 中的内容标记为同源

问题描述 投票:0回答:2

我无法让 mark.js 处理来自同一来源的 iframe 中的内容。 在创建新 Mark 实例时,存在 iframe 内容,但搜索功能不会标记其内容。这是复制我的问题的笨蛋。我相信缺少一些东西并且需要你的帮助。预先感谢!

访问:https://plnkr.co/edit/kbO60qEPLvZpH9BXhrZd

 <!DOCTYPE html>

<html lang="en" xmlns="http://www.w3.org/1999/xhtml">

<head>
    <meta charset="utf-8" />
    <script src="https://code.jquery.com/jquery-latest.min.js"></script>
    <script src="https://netdna.bootstrapcdn.com/bootstrap/3.1.1/js/bootstrap.min.js"></script>
    <script src="https://cdn.jsdelivr.net/mark.js/8.6.0/mark.min.js"></script>
    <link href="https://maxcdn.bootstrapcdn.com/bootswatch/3.3.6/superhero/bootstrap.min.css" rel="stylesheet" type="text/css">

</head>

<body>

    <style>
        body {
            margin: 15px;
        }

        div.search span,
        div.search input[name="keyword"] {
            display: block;
        }

        div.search input[name="keyword"] {
            margin-top: 4px;
        }

        div.panel {
            margin-bottom: 15px;
        }

        div.panel .panel-body p:last-child {
            margin-bottom: 0;
        }

        mark {
            padding: 0;
        }
    </style>


    <div class="panel panel-default">
        <div class="panel-body">
            <div class="search row">
                <div class="col-xs-6">
                    <input type="text" name="keyword" class="form-control input-sm" placeholder="Search...">
                </div>
            </div>
        </div>
    </div>


    <div class="panel panel-default">
        <div class="panel-body context">
            <p>
               Dummy text not in iframe: Lorem ipsum...
            </p>
__________________________________

            <iframe style="width:100%;height: 600px;background-color: white;" src="1.html"></iframe>
        </div>
    </div>


    <script>
        $(document).ready(function () {

            var options = {
                "separateWordSearch": false,
                "diacritics": false,
                "acrossElements": true,
                "iframes": true,
                //"iframesTimeout": 5000,
                "debug": true,
            };


            var keywordInput = document.querySelector("input[name='keyword']");

            function performMark() {

            var markInstance = new Mark(document.querySelector(".context"));

                var keyword = keywordInput.value;

                markInstance.unmark({
                    done: function () {
                        markInstance.mark(keyword, options);
                    }
                });
            };

            keywordInput.addEventListener("input", performMark);

        });
    </script>

</body>

</html>
javascript jquery
2个回答
0
投票

修复已在以下问题中讨论: https://github.com/julmot/mark.js/issues/137


0
投票

我刚刚访问 mark.js,Dude 的回答引用了一个发出 404 错误的页面。 还有其他参考解决方案吗?

© www.soinside.com 2019 - 2024. All rights reserved.