我发现JavaScript打破了页面的queryString并从中提取变量。我需要这样做,以便我可以创建一个新的链接,将网站放入我正在尝试的Facebook应用程序。基本上,我们将页面上传到我们的服务器,生成一个长值(k)。因此,URL始终是www.oursite.com/webhost/login.asp?k=12342342334等。
这是我到目前为止所做的:
function querySt(ji) {
hu = window.location.search.substring(1);
gy = hu.split("&");
for (i=0;i<gy.length;i++) {
ft = gy[i].split("=");
if (ft[0] == ji) {
return ft[1];
}
}
var SurveyKey = querySt("k");
var url = "http://apps.facebook.com/appname/k=" + SurveyKey;
window.location = url;
}
所以,我有一个名为“url”的var,它应该为我需要它提供正确的URL(基本上只是在facebook画布中设置页面)。我似乎迷失了如何为此创建链接。
它需要是一个人点击的按钮,它只是打开一个带有var url的新窗口。我在这里错过了什么?我试过了
document.write="<a href="url...
但我无法引用该变量。
答案 0 :(得分:1)
document.write="<a href="url...
...语法无效。如果您想使用document.write
将您的网址变量作为链接传递到网页,您应该执行以下操作:
document.write("<a href=\"" + url + "\">YOUR LINK TEXT</a>");
答案 1 :(得分:0)
您可以使用jQuery执行此操作:
$('#someDiv').append('<a href="' + url + '">click here</a>');
或没有它:
document.getElementById('someDiv').innerHTML = '<a href="' + url + '">click here</a>';
答案 2 :(得分:0)
您在页面中创建一个链接,并将javascript函数与该链接上的click事件挂钩。在click事件的JS处理程序中,您可以运行所需的任何Javascript代码,构建所需的链接,使用window.open打开一个带有该链接的新窗口。
使用jQuery:
HTML:
<a id="myLink" href="#">Click here</a>
JS:
$('#myLink').click(function() {
alert('Handler for .click() called.');
});
jsfiddle在这里看到它在行动或玩它:http://jsfiddle.net/jfriend00/AKuXG/
或者,如果您只需计算一次所需的链接并永久设置它,那么您可以在页面加载后使用这个简单的JS来实现:
document.getElementById("myLink").href = whatever javascript expression you want
答案 3 :(得分:-1)
为什么不使用PHP而不是Javascript?如果从PHP中的URL中提取变量,则只需创建链接:
<a href="www.oursite.com/webhost/login.asp?k=<?=$your_key?>">test</a>
如果您想在javascript中执行此操作:
var url;
function querySt(ji) {
hu = window.location.search.substring(1);
gy = hu.split("&");
for (i=0;i<gy.length;i++) {
ft = gy[i].split("=");
if (ft[0] == ji) {
return ft[1];
}
}
var SurveyKey = querySt("k");
url = "http://apps.facebook.com/appname/k=" + SurveyKey;
insertInPage();
}
function insertInPage() {
var content = "<a href=\"" + url + "\">link</a>"
document.write(content);
// or: document.getElementById("your_id").innerHtml = content;
}
至少在这些方面有所作为。