例如,在 jQuery 中,设置一个链接以将某些内容加载到某个区域中,我应该在调用 History.pushState 之前加载内容吗?
$('#link').click(function () {
$('#region').load('regionContent', function () {
history.pushState(null, null, 'newUrl');
});
return false;
});
Run Code Online (Sandbox Code Playgroud)
或者我应该在调用history.pushState后加载内容?
$('#link').click(function () {
history.pushState(null, null, 'newUrl');
$('#region').load('regionContent');
return false;
});
Run Code Online (Sandbox Code Playgroud)
前者对我来说似乎更可取,因为我觉得在内容改变之前 URL 不应该改变,但我更经常看到后者(例如https://github.com/blog/760-the-tree-slider) ,所以我想知道哪一个被认为是最佳实践。
所以,我有一些页面做了一些ajax和jsonp(即注入)来获取数据.我想知道如何在不使用调试工具(如firebug)的情况下查找我所创建的请求URL.等,即浏览器的GET请求的历史记录.谢谢
我可以通过自己创建所有文件来创建和运行一个简单的GWT应用程序.它工作正常,我能够看到正确的显示.
我试着玩代码来增强我的知识.我注意到的是,一旦我运行我的应用程序,说模块重命名为值" testhistory ",它工作正常.
但在那之后,如果我将重命名更改为 ' historytokentest '的值,应用程序会在类路径中出现"无法找到' testhistory.gwt.xml '等错误;可能是错字,或者您可能忘记包含类路径条目对于来源?"
如果我将重命名更改为" testhistory " 的值,它再次正常工作.
任何人都可以清楚entryPoint类名之间是否有任何关系.gwt.xml文件名,模块重命名为 's值&项目名称.他们将来可以改变吗?(我知道这样做并不好,但只是清除疑虑)
我在Codeigniter中有一个URL为http:// arslan/admin/category/index/0/name/asc/10的页面.在此URL中,uri_segment从中开始0.此(0)是默认的搜索值,name并且asc是默认排序字段和顺序,以及图10是分页索引.
现在,如果我移动到带URL的添加页面(http:// arslan/admin/category/add /),同样如上所述"add"是当前函数.
现在,如果我想通过返回页面的链接返回...我怎样才能将用户转移回去?我不能让URL返回.
有人可以帮帮我吗?
在Blackberry playbook上,正常的window.history.back不起作用.在模拟器上测试....
所以,我在index.html中尝试了这个
window.history.back = navigator.app.backHistory;
Run Code Online (Sandbox Code Playgroud)
这可以控制Phonegap函数,但在运行时它会抛出一个错误:
"Error: Status=2 Message=Class App cannot be found"
Run Code Online (Sandbox Code Playgroud)
这是Phonegap(1.4.1)功能:
/**
* Navigate back in the browser history.
*/
App.prototype.backHistory = function() {
// window.history.back() behaves oddly on BlackBerry, so use
// native implementation.
console.log("in backHistory");
PhoneGap.exec(null, null, "App", "backHistory", []);
};
Run Code Online (Sandbox Code Playgroud)
有线索吗?
我想$locationProvider在AngularJS中使用该服务而不在我的网站中呈现新的HTML模板ng-view.
我有一个div元素,通过ng-show绑定到数据元素的存在按需显示.我想通过它将其连接到浏览器位置,$locationProvider但保持在同一模板中.
模板:
<div> other stuff ... </div>
<div ng-show="model">{{ model.element }}</div>
Run Code Online (Sandbox Code Playgroud)
控制器:
Controller = function($scope, $location) {
$scope.show = function() {
$scope.model = model; // show div
}
$scope.hide = function() {
$scope.model = null; // hide div
}
}
Run Code Online (Sandbox Code Playgroud)
我无法弄清楚如何$location在这个中集成服务.如果history.pushState直接设置,AngularJS也会覆盖该位置.
我做了一个单页的网站.当用户单击菜单按钮时,内容将加载ajax.它工作正常.为了改善SEO并允许用户复制/过去不同内容的URL,我使用
function show_content() {
// change URL in browser bar)
window.history.pushState("", "Content", "/content.php");
// ajax
$content.load("ajax/content.php?id="+id);
}
Run Code Online (Sandbox Code Playgroud)
它工作正常.URL更改,浏览器不会重新加载页面
但是,当用户单击浏览器中的后退按钮时,URL将更改并且必须加载内容.
我做到了这一点,它的工作原理:
window.onpopstate = function(event) {
if (document.location.pathname == '/4-content.php') {
show_content_1();
}
else if (document.location.pathname == '/1-content.php') {
show_content_2();
}
else if (document.location.pathname == '/6-content.php') {
show_content_();
}
};
Run Code Online (Sandbox Code Playgroud)
你知道是否有办法改进这段代码?
当我点击浏览器上的后退按钮时,我遇到了更新URL的问题(我在Firefox上进行测试).更新iframe的"src"属性后,我用它replaceState来更新历史记录.如果我在此之后点击后退按钮,iframe将返回上一页但URL不会更新以反映这一点.
function updateURLBar(urlInfo) {
var stateObj = { foo: "bar" };
document.getElementById("iframeContent").src = urlInfo[1];
window.history.replaceState(stateObj, "page 2", urlInfo[0]);
}
Run Code Online (Sandbox Code Playgroud)
我是以错误的方式解决这个问题,还是我错过了一些东西.感谢先进的任何帮助!
我刚刚发布了一个Google Chrome扩展程序,该程序可将背景图片加载到新的空白标签中。该插件可在Chrome网上应用店中找到。
为了检测新标签和空白标签,我需要在扩展程序的中请求“标签”权限manifest.json。但是,这使扩展程序具有读取浏览器历史记录的权限。并非所有用户都想要它,而我们实际上并不需要它。没有此权限要求,有没有办法检测空标签?目前,我们的检查如下所示:
chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab){
if (changeInfo.status == "loading" && tab.url == 'chrome://newtab/')
{ /* load background into tab */ }
});
Run Code Online (Sandbox Code Playgroud) 我一直在教自己react-router,现在我想知道应该用哪种方法去另一页.
根据这篇文章(使用react路由器以编程方式导航),您可以转到另一个页面this.props.history.push('/some/path').
然而,老实说,我不太确定window.location.href和之间的区别history.pushState.
据我所知,window.location.href = "/blah/blah";通过新的HTTP调用引导您进入另一个页面,刷新浏览器.
另一方面,什么history.pushState(和this.props.history.push('/some/path'))做推动状态.这显然会改变HTTP引用并因此更新XMLHttpRequest.
使用history.pushState()更改在更改状态后创建的XMLHttpRequest对象的HTTP标头中使用的引用者.
对我来说,听起来两种方法都会进行新的HTTP调用.如果是这样,有什么区别?
任何建议将被认真考虑.
PS
我认为在决定如何转到另一个页面之前,开发人员需要考虑是否有必要从服务器获取数据.
如果您需要从服务器检索数据,那window.location.href就没问题,因为您将进行新的HTTP调用.但是,如果您正在使用<HashRouter>,或者为了速度而想要避免刷新页面,那么什么是一个好方法呢?
这个问题让我发了这篇文章.
browser-history ×10
javascript ×5
ajax ×2
angularjs ×1
blackberry ×1
codeigniter ×1
cordova ×1
get ×1
gwt ×1
gwt-2.4 ×1
html ×1
html5 ×1
httprequest ×1
iframe ×1
manifest ×1
php ×1
pushstate ×1
react-router ×1
tabs ×1
url ×1
window ×1