Принудительно iframe ссылки (во встроенном Google Doc), чтобы открыть в новом окне
очень странно, кажется, нет никакого способа установки ссылок на Документы Google, чтобы открыть в новом окне. (target= "_blank").
при публикации документа Google и использовании функции embed создается фрагмент iframe:
<iframe src="https://docs.google.com/document/pub?id=1mfSz_3cWh6eW-X3EhQTtCoZ33Km131An8Kyvmuxi5oM&embedded=true"></iframe>
все ссылки в документе будут открыты в iFrame и перенаправлены через службу перенаправления google: http://www.google.com/url?q=
есть ли способ открыть эти ссылки в новом окне? Я знайте, что могут быть проблемы с межкадровыми сценариями, поэтому странно, что у Google нет простого способа достичь этого ...
2 ответов
хорошо, за неимением лучшей альтернативы я решил свернуть URL-адрес Google Doc и сделать некоторую магию jQuery перед загрузкой его в iFrame.
завиток.в PHP
curl_setopt($ch, CURLOPT_URL, $Url);
[...]
$("#header").hide()
$("#footer").hide()
$('a[href^="http://"]').attr("target", "_blank");
страница.HTML-код
$("#google_content").html("<iframe width='100%' height='600' frameborder='0' src='http://www.example.com/Curl/Curl.php'></iframe>");
Google, это действительно рекомендуемый обходной путь? ;)
пользователей 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>