TOGOUTECH

javascript - 在 history.js 中强制回退 html4

coder 2024-07-30 原文

我无法让 html4Mode 选项为我工作。

我在一个非常简单的两页应用程序上使用 ajaxify 脚本 ( https://github.com/browserstate/ajaxify )。在支持 html5 的浏览器中一切正常,但如果我想出于测试目的强制使用 html4 回退,没有任何变化,似乎历史忽略了这些选项并继续使用 html5 推送状态 url。

为了强制回退,我只是更改了 ajaxify 脚本添加(在 DOM 上准备好):

History.options.html4Mode = true;

(我正在使用 v1.8b1 jquery html4+5 捆绑脚本)

有没有办法让它工作?

最佳答案

要正确初始化 history.js 的选项,必须在脚本包含在页面上之前设置选项。这可能类似于以下内容:

<script type="text/javascript" language="javascript">
    window.History = { options: { html4Mode: true} };
</script>
<script src="/scripts/jquery.history.min.js" type="text/javascript"></script>

如果要求在 DOM ready 上设置 HTML4 标志,则可以使用 delayInit 选项以相同的方式使用。请注意,您必须在准备就绪时手动调用 History.init():

<script type="text/javascript" language="javascript">
    window.History = { options: { delayInit: true} };
</script>
<script src="/scripts/jquery.history.min.js" type="text/javascript"></script>
...
<script type="text/javascript" language="javascript">
    $(document).ready(function () {
        var userInput = true;
        //some code gathering user input or something
        window.History.options.html4Mode = userInput;
        window.History.init();
    );
</script>

资料来源: https://github.com/browserstate/history.js/pull/195 https://github.com/browserstate/history.js/issues/303

注意:我已经成功地使用了第一个示例中演示的方法。第二个我没有亲自测试过。

关于javascript - 在 history.js 中强制回退 html4,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17042461/

有关javascript - 在 history.js 中强制回退 html4的更多相关文章

  1. javascript - 当 Angular 改变状态时,如何让屏幕阅读器阅读整个页面? - 2

    要求:每次更改页面时,屏幕阅读器必须阅读整个页面内容。我们使用firefox+NVDA进行测试,由于angular不会“更改页面”,我们尝试了以下方法使其在更改状态时读取整个页面:aria-live="assertive"这在很大程度上读取了我们站点中文本的更改,但它只读取了添加的内容,在我们的例子中,我们有一个表格被ng-repeat填充并且它读取正在添加信息但没有任何上下文(它没有说明正在读取的行或列)另一个问题是表单,当被angular填充时,屏幕阅读器会在它们被angular填充之前读取它,这已通过$timeout解决,但仍然是aria-live读取它会跳过一些部分的更改,如果

  2. javascript - 需要使用 Browserify 和 browserify-rails 的 sprockets 预处理文件 - 2

    我正在使用browserify-rails我正在尝试让sprockets预处理包含sprockets指令的文件,这样当我使用browserifyrequire()它时,它将包含生成的JavaScript。sprockets指令尝试包含gemjs-routes的输出,以便让我从客户端访问Rails路由。这是我的设置(在app/assets/javascripts中):system/rails_routes.jsapplication.jsapplication.js是主文件,它运行应用程序的其余部分。我希望能够做类似的事情varrr=require("./system/rails_rou

  3. javascript - 警告 : Tried to load angular more than once. ..因为 jQuery...为什么? - 2

    我想了解这里发生了什么。警告是不言自明的,我意识到在应用程序中,使用下面的代码和结构,它会运行ng-view两次('test'将在控制台中记录两次,所以Angular当然会加载两次!)....但为什么?我已经阅读了所有我能找到的关于它的帖子,它似乎归结为在angular之前加载jQuery。如果我遗漏了jQuery或者如果我在angualr之后加载jQuery(据我所知这不是好的做法),没问题。我想让jQuery支持某些功能(特别是ui-sortable)。而且,虽然它似乎并没有真正引起任何问题,但我不想让它运行我的ng-view两次。我是不是在结构上做错了什么,或者我是否缺少解决此问

  4. javascript - Bootstrap : Multiple pages (divs) and navbar - 2

    我想使用这个流行的模板:http://getbootstrap.com/examples/navbar/我不想链接到about.htm或contact.htm,此内容应该在模板内(多页/div)。这一定是这个样子:home...about...contact...但是如何从导航标签“链接”到div?这行不通:HomeAboutContact非常感谢! 最佳答案 您需要使用JavaScript和JQuery来执行此操作。有多种方法可以实现这一目标。选项1创建一个index.html,指定一个并将其留空。然后用jQuery加载home.

  5. javascript - 语义 UI 边栏和下拉菜单 - 2

    我正在尝试使用语义ui创建一个简单的webui。我想要一个带有菜单的侧边栏,在某些项目中会有子项目......应该不会那么难吧?http://jsfiddle.net/ycm8ctfx/ExampleMessages如何让子项目在正常页面内容上“飞出”侧边栏?如果您在示例中单击“消息”,将出现菜单(观察底部出现的滚动条),但由于它们是侧边栏的子项,因此它们显示在侧边栏中。但我希望它们漂浮在正常内容上!我没有通过摆弄z-index来让它工作。 最佳答案 如果侧边栏被配置为使用overlay过渡,它可以通过指定来修复.ui.sideba

  6. javascript - 如何检查是否支持 javascript 类型的数组? - 2

    想用javascript测试如果浏览器支持类型化数组http://caniuse.com/#feat=typedarrays我试过了,但似乎不是好方法,因为有些浏览器只提供部分支持..:if(window.ArrayBuffer){alert('typedarraysupported')} 最佳答案 似乎有些浏览器(IE10)不支持Uint8ClampedArray,如果这是您打算使用的功能,您可以检查一下if('Uint8ClampedArray'inwindow){...如果检查返回false,则不支持类型化数组和/或限定数组。

  7. javascript - 使用 Jasmine 测试异步回调 - 2

    我正在使用Jasmine2.1。我正在尝试使用Jasmine2.1来测试模块。我的模块之一具有异步执行代码的功能。当应用程序完成执行时,我需要测试函数的结果。有没有办法做到这一点?目前,我的模块看起来像这样:varotherModule=require('otherModule');functionMyModule(){}MyModule.prototype.state='';MyModule.prototype.execute=function(callback){try{this.state='Executing';varm=newotherModule.Execute(funct

  8. javascript replaceChild 不起作用 - 2

    我是计算机科学专业的学生,​​我们正在用javascript做练习,练习是:“用ID为“numberFour”且文本为“Mistreatment”的新项目替换项目编号4。”这是我做练习之前的样子:第一:寻找伴侣第二:无聊第三:缺乏服从第四:虐待第五点:寻求伙伴关系然后我写了这段js代码来完成作业:varvier=document.createElement("li");vier.innerHTML="Numberfour:Mistreatment";vier.setAttribute("id","numberFour");varlijst=document.querySelector(

  9. javascript - 如何在 AngularJS 中绑定(bind)自定义事件? - 2

    我有一个自定义事件core-transitionend(实际上由Polymer触发),我可以使用document.addEventListener()设置事件处理程序.但在AngularJS中执行此操作的最佳做​​法是什么?或者,我可以在DOM中明确设置一个处理程序,即,但是如何在AngularJS中定义这个函数呢? 最佳答案 参见thisfiddle,我在这里创建了一个自定义指令,它将事件绑定(bind)到元素,angular.module('HelloApp',[]).directive('customDir',function

  10. javascript - 组合与多重继承有何不同? - 2

    在某些情况下,提倡组合而不是继承。我看到这种情况在Ruby和Javascript社区中越来越多地发生。组合听起来很像多重继承。我什至在一些Ruby实现的内部读到过,模块组合是带有少量语法糖的多重继承。是一样的吗?如果不是,它与多重继承有何不同? 最佳答案 这取决于您所说的“多重继承”和“组合”是什么意思。如果组合和继承都只是意味着添加到对象响应的消息列表中,那么它们在定义上是相等的。假设类很简单virtualtables方法,并且语言中的每个对象都是由对类和一些数据的引用定义的。如果对象通过调用与其类关联的方法查找函数来响应消息,并

随机推荐