在javascript中反复切换iframe滚动条
repeatedly toggle iframe scrollbar in javascript
为了避免结束,是的,我已经研究了大多数相关的问题。以下是一些相关的问题,它们不是重复的,但有相同的标题:javascript中的滚动条iframe,在javascript中切换iframe滚动?我无法使那里建议的解决方案发挥作用。现在让我们开始
嗨,我需要随着内容的变化切换iframe上的滚动条。我有一些代码,我认为可以工作,但它失败了。下面的所有代码都来自http://jsfiddle.net/3nnAf/2
为了演示这个概念,我试图让iframe滚动条在循环中打开和关闭
Html:
<iframe src="www.google.com" id="Iframe" seamless scrolling="no" ></iframe>
尝试使用"滚动"属性:
(function toggleIFrame(){
var toggleScroll = document.getElementById('Iframe').scrolling == 'no';
if (toggleScroll){
document.getElementById('Iframe').scrolling = 'yes';
}else{
document.getElementById('Iframe').scrolling = 'no';
}
setTimeout(toggleIFrame, 2000);
}());
尝试使用样式
(function toggleIFrame(){
var toggleScroll = document.getElementById('Iframe').style.overflowY == 'scroll';
if (toggleScroll){
document.getElementById('Iframe').style.overflowY = 'hidden';
}else{
document.getElementById('Iframe').style.overflowY = 'scroll';
}
setTimeout(toggleIFrame, 2000);
}());
是否可以反复打开和关闭iframe scoll栏?
谢谢,用户117…
您的问题在这里:
<iframe src="www.google.com" id="Iframe" seamless scrolling="no" ></iframe>
同源策略阻止您与来自其他域的页面进行交互。
编辑
哦。。我很糟糕,我很糟糕。
setTimeOut(toggleIFrame(), 2000);
该函数被称为:
window.setTimeout
(你的错误控制台会告诉你的,BTW。)
编辑2好的,我确实运行了代码并对其进行了一些更改。
您有三个主要问题使代码无法正常运行。
- 至少在Chrome上,同源政策使谷歌甚至无法加载iFrame。因此,什么也没跑
- 您确实使用了错误的方法
setTimeOut
而不是setTimeout
。我看到你在编辑中修复了这个 - 您在
setTimeout
调用中使用了toggleIFrame()
。我看你也抓到这个了
此代码在'hidden'
和''
之间正确切换飞越Y
(function toggleIFrame2(){
var iFrame = document.getElementById('Iframe');
console.log("Starting value" + iFrame.style.overflowY );
var oldValue = iFrame.style.overflowY;
function inner() {
var toggleScroll = (iFrame.style.overflowY === 'hidden');
var newValue = toggleScroll ? oldValue : 'hidden'
console.log(newValue);
iFrame.style.overflowY = newValue;
setTimeout(inner, 2000);
}
inner();
}());
在这一点上,newValue被正确地切换了——但这并没有产生所需的效果。我承认这一点。
随着代码中主要的停止显示问题的解决,也许切换滚动条的其中一个答案现在对你有用。
不幸的是,我无法重复切换iframe滚动条,所以我
-
扩展iframe扩展以适应中的所有内容
-
添加了一个div包装器,我可以添加和删除滚动条
完成的代码如下。。。
HTML
<div id="IframeWrapper">
<iframe src="www.google.com" id="Iframe" seamless scrolling="no" ></iframe>
</div>
脚本
(function toggleIFrame(){
autoResizeIFrame('Iframe');
var toggleScroll = $('#IframeWrapper').hasClass('showBars');
$('#IframeWrapper').removeClass('hideBars');
$('#IframeWrapper').removeClass('showBars');
if (toggleScroll){
$('#IframeWrapper').addClass('hideBars');
}else{
$('#IframeWrapper').addClass('showBars');
}
window.setTimeout(toggleIFrame, 2000);
}());
function autoResizeIFrame(id){
var newheight;
var newwidth;
if(document.getElementById){
newheight=document.getElementById(id).contentWindow.document .body.scrollHeight;
newwidth=document.getElementById(id).contentWindow.document .body.scrollWidth;
}
document.getElementById(id).style.height= (newheight) + "px";
document.getElementById(id).style.width= (newwidth) + "px";
}
CSS
#IframeWrapper {width:300px; height:300px;}
#IframeWrapper.hideBars {overflow:hidden;}
#IframeWrapper.showBars {overflow:scroll;}
在上查看它的实际操作http://jsfiddle.net/3nnAf/5/
参考文献:Ahmy在Adjust width height of iframe to fit with content in it 上的回答
- 在firefox和chrome中的左侧显示iframe滚动条
- 使用浏览器滚动条而不是iframe滚动条
- 无法使用jQuery自定义内容滚动条将自定义滚动条添加到iframe
- 如何在angular js中使用滚动条打印iframe内容
- 隐藏滚动条 iFrame 子网站
- Iframe 滚动条不在页面右侧
- HTML,Javascript - 拆分比iFrame宽的单词,而不是生成滚动条
- 如何同步 2 个 iframe 的滚动条
- 摆脱花哨框iframe上无用的滚动条
- 从iframe中隐藏滚动条,并将其替换为页面上的滚动条
- 为iFrame创建浮动水平滚动条
- 在Facebook iframe滚动条或页面中途剪切之间进行选择
- 如何在iframe调整大小时重置父窗口滚动条
- 如何在特定iframe滚动条的滚动条上调用适当的JavaScript方法
- 自定义iframe的滚动条
- 在javascript中反复切换iframe滚动条
- 如何自定义twitter iframe滚动条的样式
- 在隐藏和显示Iframe元素后,Iframe滚动条不显示在chrome中
- 使iframe滚动条消失
- Iframe滚动条替换为我自己的设计