Tag: JavaScript

angularjs – 刷新时点击链接与实际的url

我使用routeProvider为我的url定义控制器和模板。 当我点击与实际位置相同的链接时,没有任何反应。 我想reload()方法被调用,如果用户点击这样的链接,即使该位置没有改变。 换句话说,如果我将位置设置为相同的值,我希望它的行为相同,如果我将它设置为不同的值。 有没有办法configurationrouteProvider或locationProvider自动执行它? 或者什么是正确的做法呢? 这是往返应用程序的stadard行为,但如何在angularjs中做到这一点? 我也在谷歌组织上询问过它。 更新: 这个问题得到了很多的意见,所以我会试着解释我是如何解决我的问题。 我创build了一个自定义指令,用于链接我的应用程序,如Renan Tomal Fernandes在评论中所build议的。 angular.module('core.directives').directive('diHref', ['$location', '$route', function($location, $route) { return function(scope, element, attrs) { scope.$watch('diHref', function() { if(attrs.diHref) { element.attr('href', attrs.diHref); element.bind('click', function(event) { scope.$apply(function(){ if($location.path() == attrs.diHref) $route.reload(); }); }); } }); } }]); 该指令然后用于我的应用程序中的所有链接我想要这个function。 <a di-href="/home/">Home</a> 这个指令的作用是根据di-href href属性为你设置href属性,所以angular可以像往常一样处理它,当你把鼠标hover在链接上时,你可以看到url。 此外,当用户点击它,链接的path是相同的当前path重新加载路由。

从MVC传递数组到JavaScript?

我可以通过使用这个MVC ASP.NET传递一个variables: var lastCategoryId = '<%=Model.CS.LastSelectedCategory %>'; 这工作正常与string或整数,但我该如何处理string数组? 我试图以相同的方式传递数组,但variables设置为System.String []?

jquery,检查数组中是否存在值

我相信这个问题对于那些使用java script / jquery的人来说是相当容易的。 var arr = new Array(); $.map(arr, function() { if (this.id == productID) { this.price = productPrice; }else { arr.push({id: productID, price: productPrice}) } } 我想上面的代码以真正简单的方式解释了我想要的东西。 我会想象这个$ .map会像这样工作,但不幸的是我无法得到这个结果。 什么是最简单和优雅的方式来做到这一点? 我是否真的通过所有数组来查找密钥的值是否存在? Jquery是否有像isset($array['key']) ? 编辑 我试图使用inArray,但是它保持添加对象数组,即使有一个匹配。 if ( $.inArray(productID, arr) > -1) { var number = $.inArray(productID, arr); orderInfo[number].price = parseFloat(productPrice); }else { orderInfo.push({id:productID, […]

Stufffyingly奇怪的IE 9的JavaScript错误:改变文档标题使后续的代码执行

我根本不明白这一点。 这里是一些JavaScript代码,可以在每个浏览器中使用,但是使用IE 9。它是使用ExternalInterface从Flash电影中调用的,如果电影的大小在内部发生更改,则会dynamic调整DOM中的电影的大小 function vResizeFlash(swfId, ht) { document.getElementById(swfId).height = "100%"; document.getElementById('flashContainer').style.height = ht + "px"; } 但它工作正常,如果我改变document.title: function vResizeFlash(swfId, ht) { // IE 9 won't run the rest of this function unless // we go through the charade of changing the document title. if (navigator.appName.indexOf("Microsoft") != -1) { var docTitle = document.title.replace(/^(.+?)\s*$/,"$1"); document.title = docTitle […]

为什么`obj.foo = function(){};`不给函数赋“foo”这个名字?

从ES2015(ES6)开始,函数具有正确的名称(包括正式name属性),除了明显的函数声明和已命名的函数expression式(如赋值给variables(函数名称设置为variables的名称),赋值给对象属性(函数名称设置为属性名称),甚至函数参数(函数名称设置为参数名称)的默认值。 但是,分配给现有对象的属性(例如,不在对象初始值设定项中)不会将该属性的名称分配给该函数。 为什么不? 当然,一定有一个特定的原因是不可取的。 它以前如何? 要明确:我不是问如何解决这个问题。 我问的是什么阻止了这个看似明显的情况下被处理的时候,还有很多其他的(包括默认参数值!)。 一定有一个很好的理由。 请不要推测或理论。 TC39有理由不包括在内。 我对这个原因感兴趣。 我已经通过TC39会议笔记,但还没有find它。 我迄今发现的最接近的是艾伦· 维尔夫斯 ·布洛克(Allen Wirfs-Brock) 回答贝吉(Bergi)说,由于“各种各样的反对意见”,没有就这种forms达成共识。但遗憾的是,他没有说出那些反对意见是什么。 细节: 以下所有将名称foo分配给兼容浏览器上的function: // Requires a compliant browser // Assigning to a variable or constant… // …whether in the initializer… { let foo = function() { }; console.log("1:", foo.name); // "foo" } { const foo = function() { }; […]

如何使用客户端JavaScript保持API密钥的秘密?

例如,看看这个Facebook插件。 在客户端,API密钥清晰可见。 什么是阻止另一个用户获得此密钥,并在另一个网站上使用此function? 我认为一个非常天真的实现将检查域的请求来自但这样的事情很容易造假。 如果我要创build类似的东西,我将如何去确保身份validation过程? 尽pipe某些forms的服务器authentication肯定会被要求,我还是希望尽可能把这些工作作为客户端。 任何链接或build议将不胜感激。 更新 关于API密钥的类似问题 ,我觉得很有用。

一个网站如何即时检测到JavaScript已被禁用?

通常情况下,当一个页面被加载,浏览器禁用JavaScript,我们使用<noscript>标签来写一些警告,并告诉客户端启用Javascript。 但是,即使在您使用JS加载页面之后 ,Facebook一旦被禁用,您将收到通知。 我怎么能做这样的事情? 更新:这种机制已经不再在Facebook上使用了,但是之前,我提出这个问题太晚了,但是如果find答案的话,我会非常感激。 我曾经尝试过 我想我的页面里面有一个段,一直检查Javascript是否被禁用,如果是的话,显示<noscript>的内容。 为了达到这个目的,我创build了一个CheckJS.html页面。 <!DOCTYPE html> <html> <head> <meta http-equiv="refresh" content="0"> </head> <body> <noscript> JS is disabled! </noscript> </body> </html> 这个页面不断刷新 ,当JS被禁用, JS被禁用! 会出现。 在我的原始页面中添加此页面。 我尝试了以下内容: 1- .load() 我使用JQuery来.load('CheckJS.html')在一个div 。 但是,似乎.load()只加载CheckJS.html的<body>的内容 。 意思是<head>元素,里面的东西不会被加载到div 。 2 iframe 经过一番search之后,我发现加载完整 html页面( 包括<head> )的唯一可能方法是使用<iframe> 。 <iframe src="CheckJS.html"></iframe> 但是, CheckJS.html的<meta http-equiv="refresh" content="0">会影响父页面,原始页面本身开始刷新。 如果我们能够使用这个<iframe>而不强制原始页面刷新,那么这可能是一个解决scheme,但即使find了这个解决scheme,我觉得它更像是一个技巧,而不是一个真正的解决scheme。 UPDATE 安东尼的答案certificate,我错了,该iframe刷新原来的页面,浏览器显示刷新,但实际上它不是,如果是这样,那么Javascript是可以避免的,我提供的CheckJS.html做的工作,甚至更好的是,当JS被重新启用时, <noscript>将被隐藏。 […]

带有Respond.js的Modernizr

我正在仔细评估利用Modernizr和Respond.js进行响应式devise的最佳方法,并为社区提出了一些问题。 首先,我的理解是,在将Modernizr与Respond.js捆绑在一起时,在IE8及以下版本中不需要其他编码或testing来支持媒体查询。 换句话说,当Respond.js与Modernizr捆绑在一起时,我只需要在源代码中加载Modernizr就可以使Respond.js处于活动状态。 正确? 其次,你认为这是IE8及以下版本中支持媒体查询的最有效方法吗? 从本质上讲,我将会包含比现在支持媒体查询的浏览器更大的Modernizr脚本。 如果对媒体查询的testing失败,分离这两个脚本并仅加载Respond.js会不会更高效? 第三,如果我想分离这两个脚本,您认为如果需要,加载Respond.js的最佳方法是什么? 一种select是使用IE特定的条件注释来加载响应。 另一种select是使用yepnope和Modernizr来testing媒体查询支持,并在需要时加载Respond。 哪一个会更有效和防错。 最后,如果我select分开这两个脚本,并使用Modernizr加载响应,如果需要我遇到了以下两种技术: <script> yepnope({ test : Modernizr.mq('(only all)'), nope : ['js/libs/respond.min.js'] }); </script> 要么 <script>Modernizr.mq('(min-width:0)') || document.write('<script src="js/libs/respond.min.js"><\/script>')</script> 我发现第二次崩溃的IE8,但必须只需要重写。 你会推荐哪种技术? 感谢所有的帮助。

为什么JavaScript提升variables?

为什么JavaScript提升variables? 对于这个语言的devise者来说,他们决定实施提升的好处是多么重要? 我想不出任何其他的stream行语言。

createElement与createElementNS

这两者之间真正的区别是什么? 我的意思是真实的本质区别。 定期的createElement的未来是什么? SVG是XML,而不是HTML。 我明白了。 所以我们使用createElementNS(ns_string, 'svg')然后setAttributeNS(null,,) 。 为什么? 为什么不setAttributeNS('my_ns',,) ? 为什么必须ns_string是http://www.w3.org/2000/svg而不是一些随机string? 如果只有一个命名空间,命名空间的目的是什么? ns在普通html中的用途是什么? 我是否应该将现有代码中的createElement所有实例更改为createElementNS ? 我正在阅读DOM-Level-2规范。 但我仍然感到困惑。