通过js更改iframe-src

Change iframe src through js

本文关键字:iframe-src 更改 js 通过      更新时间:2023-09-26

因此,直接面对问题,我正在编写一个js,如果屏幕分辨率更改,它应该会更改iframesrc

<script language="javascript">
function newframe()
{
    var w = screen.width;
    var srchframe = document.getElementById("proj");
    var targetURL1 = "http://wms.indianpropertynetwork.com/exchange/frames/clients.featured_projects.asp?cnt=5&wd=880&prj=1";   
    var targetURL2 = "http://lpm.indianpropertynetwork.com/exchange/frames/clients.featured_projects.asp?cnt=4&wd=668&prj=1";   
    if (srchframe.src != targetURL1 && w > 1300  )
    {srchframe.src = targetURL1 }
    else 
    { srchframe.src = targetURL2 }  
}   
</script>

并在以下iframe 中调用此函数

<iframe id="proj" onload="newframe();" marginwidth="0" marginheight="0" width="100%" height="200px" frameborder="0" scrolling="No" ></iframe>

脚本的问题是,它一直以交替的顺序加载url,并且不会停止加载。

您正在使用onload处理程序来启动另一个加载周期,因此持续重新加载似乎是您的代码想要做的。

您的代码:

  1. 如何在iframe中加载页面?调用newFrame()。这是在您的代码读取onload="newframe();"

  2. newFrame()正在设置frames-src,导致它加载另一个页面。在newframe()的任何调用中,您的if都会将新URL分配给srchframesrc。如果当前不是URL 1,则加载URL 1,否则加载URL 2,实际上会导致交换两个URL。

  3. 由于在2中切换了页面。将触发另一个加载事件。

关键问题是:通过将URL分配给srchframe.src,该框架的页面将被替换以加载另一个页面。因此,不要调整iframe的src属性,除非它实际上打算以这种方式加载另一个页面。

基本上你应该尝试不同的方法。按照最初的描述:

如果屏幕分辨率更改,则应更改iframesrc

所以不应该绑定到iframe的onload事件,而应该绑定到外窗口的onresize事件。尽管这并不是为了改变屏幕分辨率,但它比你的方法要好。最终,按照我对这篇文章的回答,尝试媒体提问:https://stackoverflow.com/questions/23198520/website-adapting-to-different-monitor-sizes/23198630#23198630

在每次更改src时调用onLoad时,只执行一次函数,为此,您可以在bool的帮助下执行,下面是您可以使用的代码:

HTML:

<script language="javascript">
var newFrameCalled = false;
function newframe()
{
    if(newFrameCalled)
        return;
    var w = screen.width;
    var srchframe = document.getElementById("proj");
    var targetURL1 = "http://wms.indianpropertynetwork.com/exchange/frames/clients.featured_projects.asp?cnt=5&wd=880&prj=1";   
    var targetURL2 = "http://lpm.indianpropertynetwork.com/exchange/frames/clients.featured_projects.asp?cnt=4&wd=668&prj=1";   
    if (srchframe.src != targetURL1 && w > 1300  )
    {srchframe.src = targetURL1 }
    else 
    { srchframe.src = targetURL2 }
    newFrameCalled = true;  
}   
</script>

希望这能有所帮助。