在IFrame src attribut中执行内联JavaScript代码

时间:2015-03-13 17:04:13

标签: javascript dom iframe

是否可以在现有IFrame的src属性上执行内联JavaScript代码(执行某些逻辑并返回url的函数)?

当我尝试代码时,我收到错误:未捕获的ReferenceError:未定义hello

<!DOCTYPE html>
<html>
<head>
	<title>title</title>
	<script type="text/javascript">
		var hello = function(src1){
            // some logic goes here
			return "www.mysite.com";
		}	
	</script>
</head>
<body>
	
	<iframe width="400" height="400" src="javascript:hello()"   >	
	</iframe>
	
</body>
</html>

3 个答案:

答案 0 :(得分:2)

你不能在src属性中放入内联javascript。您可以使用onload事件。使用以下代码

<!DOCTYPE html>
<html>
<head>
    <title>title</title>
    <script type="text/javascript">
        var hello = function(src1){
            // some logic goes here
            return "mysitename.com";
        }   
    </script>
</head>
<body>

    <iframe width="400" height="400" onload="this.src = hello()">   
    </iframe>

</body>
</html>

希望这有助于你

答案 1 :(得分:0)

您可以使用document.write

<body>
  <script type="text/javascript">
    document.write('<iframe width="400" height="400" src="' + hello() + '"></iframe>')
  </script>
</body>

答案 2 :(得分:0)

对hello()的调用是在iframe内执行(因为&#39; javascript:hello()&#39;是iframe SRC) 但功能&#39;你好()&#39;在父窗口中的iframe外部声明,嵌入iframe。 您可以在iframe src中调用parent.hello(),或者在调用hello()之前在iframe src中声明hello()的主体。以下是两种方法的演示:

Double

你可以在这里看到它: https://fiddle.jshell.net/vtdc1qxf/3/