Loading [MathJax]/jax/output/CommonHTML/config.js
社区首页 >问答首页 >允许一个iframe调整大小/移动/By?

允许一个iframe调整大小/移动/By?
EN

Stack Overflow用户
提问于 2021-08-15 14:07:16
回答 2查看 130关注 0票数 0

是否可以配置iframe的父函数,使其允许resizeTo和类似函数(moveTo)的iframe?

还是需要手动将消息传递给父级?

伊夫拉梅

代码语言:javascript
代码运行次数:0
复制
window.resizeTo = function(w,h){
 parent.postMessage({
  "command":"window_resizeTo",
  "data":{width:w,height:h}
 }, "*")
}

父级

代码语言:javascript
代码运行次数:0
复制
function receiveMessage(event)
{
 var message = event.data;
 var command = message.command;
 var properties = message.data;

 switch(command)
 {
    case "window_resizeTo":
        $(#iframe").setAttribute("style", `width:${properties.width}px;height:${properties.height}px`)
        break;
    // and so on for every function I wish to proxy
 }
}

编辑:

如果父母是同一来源的话。我知道我可以在iframe内部使用window.parent (然后调整iframe的大小将很容易)。我的问题更多的是关于允许自动绑定的iframe选项,而不是自己去做。

EDIT2

这可能不存在。因为用例太窄了。即使父母同意让iframe自己调整大小,家长也可能希望限制面积和/或添加偏移量。

答案是:在iframe中已经有window.resizeTo和类似的函数,但是(由于滥用)它们可能什么也不做。

如果要在父级上下文中调整/移动iframe,则必须自己进行“绑定”。

没有直接绑定:您必须在更改iframe的偏移量/宽度的函数中转换调整大小的函数。如果iframe和父源是相同的,则可以操纵父(所以是iframe)的父(Iframe)。我不推荐这个。

更好的选择可能是向父级发送消息。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-08-15 15:30:27

如果IFrame内容是从不同的来源加载的,您必须使用postMessage事件来给IFrame改变其大小的机会。看看MDN上的原产地的定义

如果iframe内容遵循相同的源策略,则可以从iframe内部访问window.parent.document并直接修改父节点。

可以使用以下方法找到父文档中的节点:

代码语言:javascript
代码运行次数:0
复制
// script at the iframe document
try {
  const node = [...window.parent.document.querySelectorAll("iframe")]
     .find(iframe => {
       try { // avoid errors from inaccessible iframes
         return iframe.contentWindow == window
       } catch (e) {}
     });
  if (node) {
    node.setAttribute("style", "...");
  }
} catch(e) {
  // unable to access parent
}
票数 0
EN

Stack Overflow用户

发布于 2021-08-15 15:35:49

试着用这个例子,为我工作,问候。

代码语言:javascript
代码运行次数:0
复制
<script type="application/javascript">    

    function resizeIFrameToFitContent( iFrame ) {

        iFrame.width  = iFrame.contentWindow.document.body.scrollWidth;
        iFrame.height = iFrame.contentWindow.document.body.scrollHeight;
   }

    window.addEventListener('DOMContentLoaded', function(e) {
            var iFrame = document.getElementById( 'iFrame1' );
            resizeIFrameToFitContent( iFrame );

            // or, to resize all iframes:
            var iframes = document.querySelectorAll("iframe");
            for( var i = 0; i < iframes.length; i++) {
            resizeIFrameToFitContent( iframes[i] );
       }
    });

</script>

<iframe src="usagelogs/default.aspx" id="iFrame1"></iframe>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68795658

复制
相关文章
使用 AForge.NET 做视频采集
AForge.NET 是基于C#设计的,在计算机视觉和人工智能方向拥有很强大功能的框架。btw... it's an open source framework. 附上官网地址: http://www.aforgenet.com/aforge/framework/ 。 今天要介绍的是AForge中的视频采集功能,这里的视频包括从摄像头等设备的输入和从视频文件的输入。 首先来认识一下 视频源播放器:VideoSourcePlayer,从摄像头和文件输入的视频,都会通过它来播放,并按帧(Frame)来输出Bit
Shao Meng
2018/04/28
2.1K0
在 WPF 中实现融合效果
融合效果是指对两个接近的元素进行高斯模糊后再提高对比度,使它们看上去“粘”在一起。在之前的一篇文章中,我使用 Win2D 实现了融合效果,效果如下:
dino.c
2022/10/05
1.3K0
在 WPF 中实现融合效果
WindowsXamlHost:在 WPF 中使用 UWP 控件库中的控件
在 WindowsXamlHost:在 WPF 中使用 UWP 的控件(Windows Community Toolkit) 一文中,我们说到了在 WPF 中引入简单的 UWP 控件以及相关的注意事项。不过,通常更有实际价值的是更复杂的 UWP 控件的引入,通常是一整个 Page。
walterlv
2020/02/10
5.9K0
在 WPF 中使用 x:Reference
发布于 2018-10-13 22:24 更新于 2018-12-14 01:54
walterlv
2020/02/10
1.5K0
WPF 在 DrawingContext 的 push 如何使用
如果在一个 DrawingContext 画出一个 DrawingVisual ,如何修改这个 DrawingVisual 的大小,对他进行变换?
林德熙
2022/08/04
4450
WPF 在 DrawingContext 的 push 如何使用
如果在一个 DrawingContext 画出一个 DrawingVisual ,如何修改这个 DrawingVisual 的大小,对他进行变换?
林德熙
2018/09/18
1.7K0
在.NET Core 3.0中的WPF中使用IOC图文教程
我们都知道.NET Core 3.0已经发布了第六个预览版,我们也知道.NET Core 3.0现在已经支持创建WPF项目了,刚好今天在写一个代码生成器的客户端的时候用到了WPF,所以就把WPF创建以及使用IOC的过程记录一下,希望能对大家有所帮助。当然文章实例我就以我曾阅读过的一篇文章的示例代码来进行演示了。
依乐祝
2019/07/03
8680
在.NET Core 3.0中的WPF中使用IOC图文教程
WPF 的 ElementName 在 ContextMenu 中无法绑定成功?试试使用 x:Reference!
发布于 2018-10-13 21:38 更新于 2018-10-14 04:25
walterlv
2020/02/10
3.1K0
在WPF桌面程序中使用ECharts展示图表
在WPF桌面系统需要实现仪表盘(dashboard是商业智能仪表盘(business intelligence dashboard,BI dashboard)的简称,它是一般商业智能都拥有的实现数据可视化的模块,是向企业展示度量信息和关键业务指标(KPI)现状的数据虚拟化工具。)形式的图表展示功能,研究了WPF开源的各个图件库,一般实现代码都比较复杂,灵活性不够,展示图表效果也不尽人意。后来想到ECharts,Echarts (ECharts)是百度公司出品的,算是百度不可多得的良心之作,使用方便灵活,而且
程序你好
2018/07/20
3.1K0
在 WPF 程序中应用 Windows 10 真•亚克力效果
从 Windows 10 (1803) 开始,Win32 应用也可以有 API 来实现原生的亚克力效果了。不过相比于 UWP 来说,可定制性会差很多。
walterlv
2023/10/22
5520
在 WPF 程序中应用 Windows 10 真•亚克力效果
学习WPF——了解WPF中的XAML
XAML的简单说明 XAML是用于实例化.NET对象的标记语言,主要用于构建WPF的用户界面 XAML中的每一个元素都映射为.NET类的一个实例,例如<Button>映射为WPF的Button对象 XAML可以在一个元素中嵌套另一个元素,例如Grid元素可以嵌套Button元素 了解XAML VisualStudio创建一个窗口,默认情况下产生的代码如下: 这段代码中包含两个标记元素,一个是Window,一个是Grid Window是WPF顶级元素的一种,还有另外两种顶级元素Page和App
liulun
2018/01/12
2K0
解决WPF在XP上使用微软雅黑字体
WPF项目,全局设置的微软雅黑,但是XP上没有这个字体,默认显示的是宋体。开始的思路是WPF可以将字体作为资源,在程序中使用,但是微软雅黑有两个文件,mysh, TTF和myshbd,TTF,单独加载
kiki.
2022/09/29
1K0
使用 Uno Islands 在现有 WPF 里面嵌入 Uno 框架
随着 2022 9 月份 Uno 发布了 4.5 版本,现有的 WPF 应用多了一个新的开发模式,那就是通过 Uno Islands 技术,在现有的 WPF 应用里面嵌入 Uno 应用。通过此方式可以辅助在现有的 WPF 项目里面,部分功能迁入 Uno 项目,或者是某些新开发功能通过 Uno 实现,从而利用 Uno 跨平台的能力,逐个功能点支持跨平台功能。逐个小功能接入的方式,让开发者不需要为一次性迁移一个庞大的项目而烦恼
林德熙
2023/04/07
6280
WPF Visifire使用
1.Visifire的创建需要引用的DLL包【WPFToolkit.dll;WPFVisifire.Charts;WPFVisifire.Gauges(这个以后会用到)】
全栈程序员站长
2022/09/13
4890
WPF Visifire使用
WPF使用URL协议实现网页中打开应用
网页唤起指定软件,其实就是利用URL来执行一个关键字Key,这个Key是注册表中的一个键,Value是指定路径的exe,亦可携带参数启动exe;
码客说
2022/10/28
1.1K0
WPF 使用 SharpDX
先介绍一下 SharpDx ,一个底层封装的 DirectX 库,支持 AnyCpu ,支持 Direct3D9, Direct3D11, Direct3D12,Direct2D1。支持 win32 程序和商店程序。
林德熙
2018/09/19
1.3K0
WPF 使用 SharpDX
WPF中的MatrixTransform
WPF中的MatrixTransform            周银辉 虽然在WPF中可以使用TranslateTransform、RotateTransform、ScaleTransform等进行
菩提树下的杨过
2018/01/22
1.4K0
WPF中的MatrixTransform
WPF中ListView排序
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/11/09
5160
WindowsXamlHost:在 WPF 中使用 UWP 的控件(Windows Community Toolkit)
Windows Community Toolkit 再次更新到 5.0。以前可以在 WPF 中使用有限的 UWP 控件,而现在有了 WindowsXamlHost,则可以使用更多 UWP 原生控件了。
walterlv
2020/02/10
4.7K0
修改WPF中connectionString[通俗易懂]
大家好,我是架构君,一个会写代码吟诗的架构师。今天说一说修改WPF中connectionString[通俗易懂],希望能够帮助大家进步!!!
Java架构师必看
2022/07/19
4440

相似问题

WPF使用AForge创建视频

12

在WPF应用程序上使用WebCam实现AForge.Net

48

C# WPF AForge :如何使视频平滑?

18

在AForge库中使用ImageProcessingLog

10

使用Aforge保存图像

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文