将javascript函数的结果转换为可用的变量

时间:2014-09-06 05:44:53

标签: javascript php jquery html

我有这个代码,只需点击按钮即可返回iframe的网址

<html>
<body>
<iframe src="start.php" name="vframe" id="vframe"></iframe>

<script>
function glink() {
alert(document.getElementById('vframe').contentWindow.location.href);
}

</script>

<button onclick="glink()">Click me</button>
</body>
</html>

我想要做的是以某种方式使用javascript函数创建一个变量(它通过onclick捕获的链接)在函数内部,而不需要可以在父级中使用的onclick

例如

<html>
<body>
<iframe src="start.php" name="vframe" id="vframe"></iframe>

<script>
function glink() {
var x = document.getElementById('vframe').contentWindow.location.href;
}

</script>


Then I can use var x in this way ...

<script> if ($link =="start.php") { echo '<img src="start.jpg">' } else {
   echo '<img src="end.jpg">' }
 </script>
</body>
</html>

显然,javascript在某种程度上能够获得链接,但我需要以编程方式获取它而不必依赖于“点击”,我需要能够在变量中保存链接以便我可以使用它如条件声明,如上所述。

我对javascript语法不太熟悉。

====

被修改

====

我试过这个(基于DevishOne的建议):

<html>
<body>
<iframe src="start.php" id="vframe"></iframe>

<script>
function glink() {
    var x = $('#vframe').attr('src');
    $.get('processIframeLink.php',{link:x});
}
</script>

<?
$link = $_REQUEST['link'];
echo $link;
if ($link =="start.php") {
    echo '1';
} else {
    echo '2';
}
?>

</body>
</html>

但是'$ _REQUEST ['link'];'

没有显示任何内容

然而我只是尝试了这个:

<html>
<body>

<? $test = '<p id="demo"></p>'; 
echo $test;

?>

<iframe src="start.php" name="vframe" id="vframe"></iframe>
<script>
document.getElementById("demo").innerHTML = document.getElementById('vframe').contentWindow.location.href;
</script>
</body>
</html>

这里,echo $ test返回脚本的结果。但由于某种原因,它不断返回“约:空白”

如果有某种方法可以获取“document.getElementById('vframe')。contentWindow.location.href;”为了显示iframe链接,我已经完成了目标。

我找到了“document.getElementById('vframe')。contentWindow.location.href;”在网上很多地方说它可以获得iframe链接,但我不断得到“about:blank”

==========

编辑

以下是最新的尝试:

<html>
<body>
<iframe src="start.php"></iframe>
 <script>
function glink() {
 var x = frames[0].location;
 document.getElementById("demo").innerHTML = x;
}
</script>

<button onclick="glink()">Click me</button>

<? $link = '<p id="demo"></p>'; ?>
   echo '<p id="demo"></p>';
?>     
</body>
</html>

这样做(点击后),允许JS找到链接,然后PHP将其作为变量读取。这里唯一的问题是如果没有'click',frame [0] .location; =“about:blank”...如果 点击,则代码将链接写入PHP变量。

如何在没有点击的情况下“读取”链接来模拟点击以引入链接,这将是理想的。

2 个答案:

答案 0 :(得分:1)

您的问题是JS无法直接与PHP通信。

立即呈现PHP页面,并通过Web浏览器在加载页面时呈现JS。

要解决此问题,您需要使用Ajax或jQuery,并通过POSTBACK函数使用POST或GET函数。

它们允许您在获取结果并将结果呈现到主页面时将信息发送到辅助页面。

答案 1 :(得分:0)

<强> HTML

<script>
function glink() {
    var x = $('#vframe').attr('src');
    $.get('processIframeLink.php',{link:x});
}
</script>

PHP(processIframeLink.php)

$link = $_REQUEST['link'];
if ($link =="start.php") {
    echo '<img src="start.jpg">';
} else {
    echo '<img src="end.jpg">';
}