我在我的JavaScript中使用了一个绝对URL,我为window.location编写了硬编码.
我不想每次测试我的应用程序时都要更改它.在PHP中,我会通过测试$ _SERVER ["HTTP_HOST"]变量来找出我所在的服务器并进行相应调整.但是,我对Java并不熟悉,并且想知道它是否有类似的方法?或者甚至可能是JavaScript有类似的方法?
代码如下:
var url = "http://172.17.1.107/store/results/index.jsp";
window.location = url;
Run Code Online (Sandbox Code Playgroud)
我想做的是:
var server = [something that returns just 172.17.1.107 (with or without the http:// is fine)]
var url = "http://" + server + "/store/results/index.jsp";
window.location = url;
Run Code Online (Sandbox Code Playgroud)
在PHP中我会这样做:
var server = <?= $_SERVER["HTTP_HOST"] ?>
var url = "http://" + server + "/store/results/index.php";
window.location = url;
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?我想我的运作是假设您必须使用绝对URL来更改JavaScript中当前窗口的位置.如果还有其他方法可以在没有绝对URL的情况下更改JavaScript中的窗口位置,请随时提供.
提前致谢...
我们的url路径名是
www.nicadpower.com/index.com
Run Code Online (Sandbox Code Playgroud)
但我们只希望以后拿到路径www.nicadpower.com这是
index.com
Run Code Online (Sandbox Code Playgroud)
我们如何使用window.location和jquery获取index.com
我有代码片段,点击链接执行,如下所示
cj_redirecturl="/HomeWork/main/load_course";
utility.xhttprw.data(cj_redirecturl,{data:courseid},function(response){
if(response){
window.location.href=base_url+"main";
///next
utility.xhttprw.data(redirecturl,{data:""},function(response){
if(response){
id=ent;
document.getElementById('content').innerHTML=response;
// Assignemnt module
//Call function from javascript/assignment.js file to display particular assignment (ent:means assignment_id) //
if(con==5)
{
get_assignment_id(ent);
}
if(con==9)
{
get_content_details(ent);
}
} //end of response
},false,false,false,'POST','html',true);
}
},false,false,false,'POST','html');
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,window.location.href=base_url+"main";将页面重定向到其各自的页面,但这会停止执行紧挨着它编写的代码.现在我希望这个代码在写入时执行,即首先代码应该带我到相应的"主"页面,然后代码写入后必须执行并给我一个必需的输出.
有人可以指导我实现这一目标吗?
我使用的是GAS网络应用,当用户执行某些操作(例如点击特定的div)时,该应用需要刷新其内容。
在客户端,我有一个从onclick调用的脚本
google.script.run.withSuccessHandler(refreshCallback).myServersideFunction();
function refreshCallback(roomsPlus) {
var statusDiv = document.getElementById("status");
statusDiv.innerHTML = "Reloading...";
window.location.reload(true);
};
Run Code Online (Sandbox Code Playgroud)
状态div更改为“正在重新加载...”,因此我知道回调已被调用,但随后它从未重新加载页面。Caja或google apps脚本会禁用页面刷新吗?还有另一种刷新页面的方法吗?
我发现自己总是写作:
console.log(window.location.href);
Run Code Online (Sandbox Code Playgroud)
甚至没有考虑过它.关于SO的大多数答案也是这样写的.我有什么理由不能写:
location.href
Run Code Online (Sandbox Code Playgroud)
既然location是窗口级别的对象?这有什么跨浏览器兼容性问题吗?
澄清:我知道有document.location- 这不是这个问题的内容.这location与使用window.location跨浏览器仅使用vs 有任何区别.
这是一个很长的镜头,但UI路由器是如此受欢迎,以为可能有人在这里可以洞察这个问题.
我正在将项目迁移到Angular JS.该项目由一个包含多个不同面板的页面组成 - 每个面板都是从服务器下载的,带有AJAX的HTML,用Javascript注入到页面中,并与jQuery History管理的自己的href相关联.
jQuery历史跟踪浏览器状态并在每个面板注入Javascript后相应地更新window.href.例如:
Panel 1:
window.location.href // http://myapp.com/panel1
History.getLocationHref() // http://myapp.com/panel1
History.getPageUrl() // http://myapp.com/panel1
Panel 2:
window.location.href // http://myapp.com/panel2
History.getLocationHref() // http://myapp.com/panel2
History.getPageUrl() // http://myapp.com/panel2
Panel 3:
window.location.href // http://myapp.com/panel3
History.getLocationHref() // http://myapp.com/panel3
History.getPageUrl() // http://myapp.com/panel3
Run Code Online (Sandbox Code Playgroud)
等等
因为每个面板都是注入的,而不是在注入DOM后用Angular编译它们,所以我为每个面板引导了单独的AngularJs应用程序.到目前为止,这已经很好了.
现在我在Panel 2中使用AngularJs UI-router - 所以我可以在替代模板中呈现数据.问题是,UI-Router必须以某种方式混淆浏览器历史记录和/或窗口href.因为一旦该应用程序被实例化,让我说我从Panel 1开始,然后单击Panel 2,然后单击Panel 3,我遇到了这个问题:
Panel 1:
window.location.href // http://myapp.com/panel1
History.getLocationHref() // http://myapp.com/panel1
History.getPageUrl() // http://myapp.com/panel1
Panel 2:
window.location.href // http://myapp.com/panel2
History.getLocationHref() // http://myapp.com/panel2
History.getPageUrl() // http://myapp.com/panel2
Panel 3:
window.location.href // http://myapp.com/panel2
History.getLocationHref() …Run Code Online (Sandbox Code Playgroud) javascript jquery window.location angularjs angular-ui-router
我想打开下载链接而不打开空白页面(然后,我不会使用window.open)。然后我使用window.location.hrefor window.location.assign。但问题是这两种方法都会断开我的 websockets 连接。我该如何解决这个问题?
为了更清楚起见,没有抛出任何错误消息,我在 chrome 上测试了它。Websocket 就停止工作了。
我尝试通过调用注销端点来注销使用 AWS Cognito 的应用程序。我没有使用 AWS SDK,因为据我所知,它尚未涵盖 oauth 应用程序集成和使用外部联合身份提供商登录(如果我错了,请纠正我)。我从 AWS 托管的登录屏幕登录,当我调用其授权端点时,我会重定向到该屏幕。他们使用“代码”将我重定向回我的页面,我使用其令牌端点将其发回给他们以获取令牌。所有这些都是教科书上的 oauth 2.0 内容。
问题是,当我使用 JavaScript 浏览器重定向 (window.location.href = ....) 调用注销端点时,它不会清除我登录时设置的 cookie(“XSRF-TOKEN”和“cognito”) ") 并且我无法手动清除它们,因为它们是从 AWS 域设置的,该域与我的网站托管的域不同。当我在地址栏中输入注销链接时,cookie 会被清除。在代码中使用 window.location.href 和在地址栏中删除链接之间显然有区别。
我想使用jQuery制作一个颜色渐变的导航菜单,其中对应于当前页面的"按下"按钮与"未按下"按钮的行为不同(具体地说,它在悬停时不会淡化为不同的颜色).如果我查看www.guitaracademy.nl上的示例,我看到他们使用带有window.location.hash属性的本机javascript.
但是,我似乎无法将此哈希变为jQuery.这是一个示例脚本:
<html>
<head>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js"></script>
<script type="text/javascript">
$(function(){
var p=window.location.hash;
$("#clickme").click(function(){
alert(p)
});
});
</script>
</head>
<body>
<a href="#test">Click me first</a>
<div id="clickme">Then click me</div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
加载此页面后,我点击"先点击我"链接; 然后在地址栏中,我看到原始网址附加了"#test".但是,如果我然后单击"然后单击我"div,我会看到一个空警报.好像哈希不是'更新'.
我非常感谢任何帮助.
用例是这样的:我想在页面中运行代码进行单元测试(在浏览器中,QUnit或类似的东西).页面可以做的一件事就是导航到另一个页面.我在捕捉此事件时遇到问题,因为:
我理解有安全理由不允许停止导航,但对于开发而言,能够这样做是非常有用的.
有没有可能这样做(我没有直接控制测试运行器,所以我不能只加载iframe中的代码并让它导航然后检查iframe的位置)?
编辑:更具体一点:我想测试,是否,基于来自facebook的记录/连接状态(我使用facebook-stub从github到mock fb),在登录按钮上安装了正确的处理程序(比如说,$('#login-btn')),通过点击导航页面到facebook oauth对话框,服务器流程(此处的详细信息并不重要).
所以我希望能够做到这一点:
// set up fb mock to not be connected
fbAsyncInit(); // simulate the startup of app
$('#login-btn').click();
equal(document.location.href, "http://www.facebook.com/oauth/...", "OAuth dialog not started.");
Run Code Online (Sandbox Code Playgroud)
但如果当然,没有实际的导航.怎么做测试?
window.location ×10
javascript ×8
jquery ×4
angularjs ×1
browser ×1
hash ×1
html ×1
java ×1
php ×1
reactjs ×1
reload ×1
unit-testing ×1
url ×1
websocket ×1