Подтвердить что ты не робот

Силовые ссылки iFrame (во встроенном Google Doc) для открытия в новом окне

Как ни странно, похоже, что ссылки Google Document не открываются в новом окне. (Целевой = "_blank" ).

При публикации документа Google и использовании встроенных функций генерируется фрагмент iframe:

<iframe src="https://docs.google.com/document/pub?id=1mfSz_3cWh6eW-X3EhQTtCoZ33Km131An8Kyvmuxi5oM&amp;embedded=true"></iframe>

Все ссылки в документе будут открываться в iFrame и перенаправлены через службу переадресации Google: http://www.google.com/url?q=

Есть ли способ открыть эти ссылки в новом окне? Я знаю, что могут быть проблемы с межкадровыми сценариями, поэтому у странного Google нет простого способа добиться этого...

4b9b3361

Ответ 1

ОК, при отсутствии лучшей альтернативы я решил закрутить URL-адрес Google Doc и сделать некоторую магию jQuery перед загрузкой в ​​iFrame.

Curl.php

curl_setopt($ch, CURLOPT_URL, $Url);
[...]
$("#header").hide()
$("#footer").hide()
$('a[href^="http://"]').attr("target", "_blank");

page.html

$("#google_content").html("<iframe width='100%' height='600' frameborder='0' src='http://www.example.com/Curl/Curl.php'></iframe>");

Google, это действительно рекомендуемое решение?;)

Ответ 2

Пользователь avioing связан с GitHub gist: https://gist.github.com/psjinx/1f2317a50eb2b506ed84

Это хорошая отправная точка.

Однако - iframe srcdoc - не поддерживается в IE - http://caniuse.com/#feat=iframe-srcdoc

Мое слегка измененное решение, стили необязательны.

<style>
    body { margin: 0; padding: 0; }
    iframe { margin-left: 2vw; margin-top: 2vh; height: 90vh; width: 90vw; }
</style>


<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>

<iframe srcdoc="" frameborder="0" scrolling="no"></iframe>

<script>
    $(function() {
        $.get("https://docs.google.com/document/d/1WUsQ_Kaa_tJljadPpHO2AFwvOAIqrYFS_zehUd6iCVk/pub?embedded=true", function(html) {
            var contents = $("iframe").contents();

            contents.find("html").html(html);

            setTimeout(function() {
                contents.find('a[href^="http://"]').attr("target", "_blank");
                contents.find('a[href^="https://"]').attr("target", "_blank");
            }, 1000); // Actually not sure if timeout is required here...
        });
    });
</script>

Ответ 3

Более простой обходной путь без кодирования - встраивание документа Google из Google Диска вместо "опубликованного" документа Google. Разрешения могут позволить вам обеспечить ограничение просмотра и распространения документов.

Перейдите по этой ссылке и посмотрите раздел "Диск Google"

У нас это отлично сработало - ссылки открываются без предупреждения, что может напугать пользователей.