我发现这个小脚本允许用户在其网站上嵌入一个简单的JavaScript代码,以显示我网站上的iframe。这很好用,但是我试图通过他们嵌入的代码传递1个变量,并在我的最后将它设置为php变量。
我提前道歉我不太了解javascript!遗憾。
用户将嵌入的示例代码(窗口小部件类型代码)
<script language="JavaScript" src="http://www.mysite.com/public/iframe.js" rel='{"id":"1"}'></script>
这是在我的结尾生成iframe的代码
// Set path to the iframe file
var filePath = 'http://www.mysite.com/public/iframe.php';
// Setup the iframe target
var iframe='<iframe id="frame" name="widget" src ="#" width="100%" height="1"
marginheight="0" marginwidth="0" frameborder="no" scrolling="no"></iframe>';
// Write the iframe to the page
document.write(iframe);
var myIframe = parent.document.getElementById("frame");
// Setup the width and height
myIframe.height = 350;
myIframe.width = 960;
myIframe.src = filePath;
// set the style of the iframe
myIframe.style.border = "1px solid #999";
myIframe.style.padding = "8px";
最终目标是rel属性id = 1并将其分配给php变量以供进一步使用。我做了很多环顾四周,似乎json_decode是答案,但似乎没有任何效果。
答案 0 :(得分:0)
不要将id
作为rel
属性传递,只需将其直接添加到网址:
<script language="JavaScript" src="http://www.mysite.com/public/iframe.js?id=1"></script>
然后在你的php中访问它。
$id = (array_key_exists('id', $_GET)) ? $_GET['id'] : null;
这是一个简写if
,用于检查以确保已将ID添加到网址中。它与:
if(array_key_exists('id', $_GET) {
$id = $_GET['id'];
} else {
$id = null;
}
答案 1 :(得分:0)
我非常确定rel属性不是iframe标记中使用的内容。这通常用于rel =“nofollow”的标签中,以便搜索引擎不会关注该链接。
我没试过这个,但也许您可以在嵌入代码中的问号后发送参数。像这样:
<script language="JavaScript" src="http://www.mysite.com/public/iframe.js?id=1"></script>
然后您的PHP代码只在GET请求中查找。
<?php
echo $_REQUEST['id'];
?>
当然,这假设您的接收脚本是用PHP编写的。由于你显示.js扩展名,我不确定PHP代码是否正在执行?另外,我不是100%确定你可以在javascript嵌入中传递这样的参数。
答案 2 :(得分:0)
在JavaScript中添加此内容以查找脚本标记本身:
var allScripts = document.getElementsByTagName('script'),
currentScript = allScripts[allScripts.length - 1 ];
然后,您可以使用rel
属性值或解码src
属性。
顺便说一下,当以异步方式添加脚本元素时,这可能并不总是有效,在这种情况下,您必须检查src
是否与您的文件名匹配,或者检查rel
或许< / em>的