这是我的 javascript 来调整 iframe 的大小并需要一些编辑

Posted

技术标签:

【中文标题】这是我的 javascript 来调整 iframe 的大小并需要一些编辑【英文标题】:here's my javascript to resize iframe and need some edit 【发布时间】:2017-07-14 18:57:07 【问题描述】:

这是我的 iframe,它位于带有按钮的 div 中

  	function myFunction() 
    	var url =document.getElementById("myFrame").getAttribute("src");
    	var newUrl = url.substring(0,url.indexOf("width")) + "width=320&height=270";
    	document.getElementById("myFrame").setAttribute("src",newUrl);
    	document.getElementById("myFrame").setAttribute("style","border:none;overflow:hidden;width:320px;height:270px;");
      
  <div style="width:auto;height:auto;" id="mydiv">
    
       <iframe id="myFrame" src="http://domain.com/page.php?width=400&height=400"  ></iframe>
    
    </div>
    
    <button onclick="myFunction()">Change Size</button>

我需要的是我的代码可以改变 iframe 的大小,并且它的 src 链接是大小。但如您所见,我的 id 为“mydiv”的 div 的样式宽度和高度是自动的。当我使窗口更大时,我需要我的代码在宽度和高度上保持 100% 全宽,div 是尺寸增加,但 iframe 不会改变,因为它具有固定大小。

我试过了

("style","border:none;overflow:hidden;width:100%;height:100%;")

("width")) + "width=100%&height=100%"

但它不能正常工作。任何一个 iframe 都搞砸了,但不能正常工作。希望您理解我在这方面确实需要帮助。

【问题讨论】:

【参考方案1】:

如果我们谈论的是纯 javascript,下面的示例应该可以正常工作。

// Select your button
var button = document.getElementById("button");

// Button event listener for click
button.addEventListener("click", myFunction);

// Button function
function myFunction() 
    document.getElementById("myFrame").style.cssText = 'width: 600px !important; height: 600px !important;';

我已经在JSFiddle 上测试了代码。看看吧。


我认为您在 iFrame 中过于关注了。你必须专注于你可以处理的事情。在这种情况下,尝试修改 url 属性不会做任何事情,因为这不是控制 iframe 宽度和高度的因素。

元素控制自身的外观。因此,您必须使用随 iFrame 提供的 CSS 或属性。在这种情况下,我选择通过 JavaScript 使用 CSS。


我没有提供 jQuery 或 3rd 方解决方案,因为用户指定了 JavaScript,而且看起来他或她没有在整个代码中实现任何它。

但为了娱乐,这里有一个 jQuery 解决方案:

$('#button').click(function () 
    $('#myFrame').css("cssText", "width: 600px !important; height: 600px !important;");
);

更清洁的方法!

【讨论】:

非常感谢您的 ard 工作,但您的代码仅适用于调整 iframe 的大小,而不适用于链接。我知道你说过“尝试修改 url 属性不会做任何事情,因为这不是控制 iframe 宽度和高度的原因”但是亲爱的,我需要代码来调整链接大小,我的意思是这里 page.php?width=400&amp;height=400 宽度和高度。因为 iframe 上的某些页面不会自动调整链接大小。就像你的视频一样,我只需要调整 iframe 的大小,不需要它的 src 链接。【参考方案2】:

** 编辑 **

事实证明我完全误解了这个问题。您希望 IFrame 的内容填充 IFrame?我不认为你可以为所欲为。

如果您需要调整 IFrame 内的内容大小:

在 IFrame 内编辑页面的 CSS。 如果 IFrame 内容与您的父级具有相同的域名,那么您可以使用 javascript 访问其 DOM,并进行操作。

这些都不适用于您的代码示例。

我在 sn-p 中使用了一些 CSS3,它使内容看起来更大。也许这样的事情会有所帮助?

<!DOCTYPE html>
<html>
    <head>
        <style>
            html, body  width: 100%; height: 100%; padding:0; margin:0; 
            
            #div 
              width: 600px; 
              height: 600px; 
              padding: 0; 
              
            
            
            #iframe 
              width: 480px; 
              height: 480px; 
              border: 1px solid black;
              
              transform: scale(1.25);
              transform-origin: 0 0;
              
              /* browser compatibility */
              -webkit-transform: scale(1.25);
              -webkit-transform-origin: 0 0;   
              -moz-transform: scale(1.25);
              -moz-transform-origin: 0 0;
              -o-transform: scale(1.25);
              -o-transform-origin: 0 0;  
              -ms-zoom: 1.25;         
            
            
        </style>
    </head>
    <body>
        <div id="div">
            <iframe id="iframe" src="http://domain.com/page.php"></iframe><br />
        </div>       
        
        <!-- uncomment to view the original size of the content inside the iframe -->
        <!--
        <iframe id="myFrame" src="http://domain.com/page.php?width=400&height=400"  ></iframe>
        -->
    </body>
</html>

【讨论】:

亲爱的你的代码工作但 src 链接不是完整的宽度和高度与 div。它的固定尺寸为 width=320&height=270 如果我做到了page.php?width=100%&amp;height=100% 它不起作用 将 iframe url 更新为:page.php?width=100%&height=100% 不会对 iframe 做任何事情,它只会改变 iframe 内呈现的内容。将 iframe 上的样式设置为:style="none;overflow:hidden;width:100%;height:100%;" 但是兄弟,我必须让 iframe 的内容为 100% 的宽度和高度,我不明白你所说的渲染是什么意思 我想我完全误解了你的问题。我改变了我的答案【参考方案3】:

根据内容处理 iframe 大小通常很复杂,我建议使用像 https://davidjbradshaw.github.io/iframe-resizer/ 这样的 3rd 方解决方案(我与它无关,但我已经使用过多次,完全没有问题) .

您可以尝试一下,看看是否适合您的需求。

希望对你有帮助

【讨论】:

以上是关于这是我的 javascript 来调整 iframe 的大小并需要一些编辑的主要内容,如果未能解决你的问题,请参考以下文章

Javascript 没有调整 iframe 的大小

jQuery调整iframe高度

JavaScript Iframe自动调整大小

javascript 调整iframe宽度和高度

使用Javascript调整Iframe高度

JavaScript 根据内容调整iframe大小