Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html 强制iFrame链接(在嵌入的Google文档中)在新窗口中打开_Html_Iframe_Hyperlink_Cross Domain_Google Docs - Fatal编程技术网

Html 强制iFrame链接(在嵌入的Google文档中)在新窗口中打开

Html 强制iFrame链接(在嵌入的Google文档中)在新窗口中打开,html,iframe,hyperlink,cross-domain,google-docs,Html,Iframe,Hyperlink,Cross Domain,Google Docs,非常奇怪的是,似乎没有办法将Google文档链接设置为在新窗口中打开。(target=“_blank”) 发布Google文档并使用嵌入功能时,将生成iframe代码段: <iframe src="https://docs.google.com/document/pub?id=1mfSz_3cWh6eW-X3EhQTtCoZ33Km131An8Kyvmuxi5oM&amp;embedded=true"></iframe> 文档中的所有链接都将在iFrame中

非常奇怪的是,似乎没有办法将Google文档链接设置为在新窗口中打开。(target=“_blank”)

发布Google文档并使用嵌入功能时,将生成iframe代码段:

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

文档中的所有链接都将在iFrame中打开,并通过google的重定向服务重定向:


有没有办法让这些链接在新窗口中打开?我知道可能存在跨框架脚本问题,所以奇怪的是,谷歌没有简单的方法来实现这一点…

好的,由于没有更好的替代方案,我决定卷曲谷歌文档URL,并在将其加载到iFrame之前执行一些jQuery魔术

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>");
$(“#谷歌内容”).html(“”);
谷歌,这真的是推荐的解决方法吗?;)

链接到GitHub gist的用户:

这是一个很好的起点。

但是,IE中不支持-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>

正文{margin:0;padding:0;}
iframe{左边距:2vw;右边距顶部:2vh;高度:90vh;宽度:90vw;}
$(函数(){
$.get(”https://docs.google.com/document/d/1WUsQ_Kaa_tJljadPpHO2AFwvOAIqrYFS_zehUd6iCVk/pub?embedded=true,函数(html){
var contents=$(“iframe”).contents();
contents.find(“html”).html(html);
setTimeout(函数(){
contents.find('a[href^=“http:/”]).attr(“target”,“_blank”);
contents.find('a[href^=“https://“]).attr(“target”,“u blank”);
},1000);//实际上不确定这里是否需要超时。。。
});
});

一个更简单的非编码解决方案是从google Drive嵌入google文档,而不是“已发布”的google文档。 权限允许您确保文档的查看和流通受到限制

请按照“谷歌硬盘”下的部分进行操作


这对我们来说非常有效-链接打开时没有警告,可能会吓唬用户。

在使用Google文档发布功能时,我们在这里的参考资料页()上遇到了同样的问题。最终用户会看到drive.google.com拒绝连接图像,因为链接试图在iframe中打开。

上述与CURL相关的解决方案不适用于我们,因为我们需要使文档编辑器简化这一点

我发现这给了我一点暗示,我想我应该试试

  • 像平常一样发布Google文档
  • 在提供的iframe嵌入代码中,将
    src
    属性与以下格式的
    URL
    交换:
    https://docs.google.com/document/d/e/ENTER_YOUR_DOCS_ID/pub?preview

  • 这将在您的文档中嵌入一些恼人的谷歌页眉和页脚,但链接将在新窗口而不是iframe中打开。

    我知道这已经有很长时间了,但这是唯一有效的方法吗?不幸的是,是的,但今天希望有更好的解决方案!?我发现了一个客户端JS解决方案:谢谢分享!这样做有什么相关缺点吗?@Fabriciph相关缺点-SEO-不确定谷歌是否正确索引了这样的页面。我的示例--您可以查看源文件。。