【问题标题】:converting the result of a javascript function into a usable variable将 javascript 函数的结果转换为可用变量
【发布时间】:2014-09-06 05:44:53
【问题描述】:

我有这个代码,它在单击按钮时返回 iframe 的 URL

<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 返回脚本的结果。但由于某种原因,它一直返回“about:blank”

如果有办法获得“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 将其作为变量读取。这里唯一的问题是如果没有“点击”,frames[0].location; = "about:blank" ... 如果有点击,那么代码会将链接写入 PHP 变量。

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

【问题讨论】:

  • 要与JS 通信 -> PHP 你需要使用ajax 因为 PHP 在页面渲染后已经离开了范围。
  • 您已经用“jQuery”标记了这个问题,但您似乎没有使用 jQuery。你会接受 jQuery 答案吗?
  • 当然,任何可行的方法......我已经为此工作了一周

标签: javascript php jquery html


【解决方案1】:

你的问题是JS不能直接和PHP通信。

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

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

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

【讨论】:

  • 我上面的例子表明我可以使用 JS 给我一个 PHP 变量(见上面的代码,你自己试试)。唯一的问题是“document.getElementById('vframe').contentWindow.location.href;”不断返回“about:blank”,而不是像据称能够做到的那样给我链接。现在的诀窍是找到一些可以获取 iframe 链接的 javascript,因为我知道如何将它读入 PHP 变量。问题是似乎没有代码可以抓取不是某种“onclick”东西的链接。感谢您的回复。
  • 好的,我为你做了另一个谷歌。所以你是想获取 iFrame 的 SRC 参数吗?只是为了确定。
  • 如果是,那么 POSTBACK 函数应该返回这个 '$('iframeId').contents().get(0).location.href' 的值。它将获取框架正在使用的 URL 的内容。我没有测试它,但从这里看来是合法的stackoverflow.com/questions/748727/…
  • 是的,iframe 的 URL(全部在本地提供)。因此,当服务器在 iframe 内导航时,父页面具有获取 iframe 中显示的页面的代码。 ...这段代码完成了,( untitled 获取 iframe 位置。 a> ) 但我必须单击一个按钮才能获得它。我需要 itgot 而不必点击某些东西...感谢您的回复
  • 所以您的目标是获取正在使用 'alert(frames[0].location);' 呈现的部分代码?
【解决方案2】:

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">';
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-27
    • 2010-10-22
    • 1970-01-01
    • 2018-09-12
    相关资源
    最近更新 更多