标签: unobtrusive-javascript

加载了表示我的JS脚本的最佳方式

我有一个JS脚本将托管在我的服务器上,其他人将嵌入他们的html,即

...<code for http://yoursite.com />
<script type="text/javascript" src="http://mysite.com/awesome.js" />
...<code for http://yoursite.com />
Run Code Online (Sandbox Code Playgroud)

我的脚本声明了一个对象,其中包含一组可用作javascript Object()的属性,即

<script type="text/javascript">
//From http://mysite.com/awesome.js
alert(Awesome.Name);
</script>
Run Code Online (Sandbox Code Playgroud)

由于加载时间的变化,似乎我需要发信号通知我的脚本中的"Awesome"对象已准备就绪.我需要它自己站立,因此不依赖于特定的JS框架.

我是否需要发布自己的自定义JS事件,或者我的脚本加载的简单事实是否被现有的页面级事件之一捕获?我该怎么做呢?

更新:作为参考点,如果我将JS包含在从" http://mysite.com " 运行的HTML页面中,则可以使用并填充Awesome对象.当JS文件包含在另一个域中时,该对象在运行时未定义.

javascript unobtrusive-javascript javascript-events

3
推荐指数
1
解决办法
1959
查看次数

没有Rails的内置助手使用AJAX的最佳实践?

在我的博客应用程序中,一些帖子显示为摘录 - 即,用户看到第一个(比如说)500个字符,并且可以单击链接查看整个帖子.以下是相关部分:

<% href = url_for post_path(:id => post) %>

<h1 class="title"><%= post.title %></h1>
<h2 class="published_on"><%= post.author %> wrote this <%= time_ago_in_words(post.published_on)%> ago</h2>
<div class="body">
  <% if defined?(length) %>
    <%= truncate_html(post.body, :length => length, :omission => "&hellip;<h1><a class='more' href=\"#{href}\">Click here for more!</a></h1>") %>
  <% else %>
    <%= post.body %>
  <% end %>
</div>
Run Code Online (Sandbox Code Playgroud)

但是,而不是"点击此处获取更多信息!" 将用户带到一个单独的页面,我希望它能够填充内联的其余部分.目前,我已经通过将上面的代码片段放在以下div中来实现这一点:

<div class="post" id="post_<%= post.id %>">
  <%= render :partial => 'post_content', :locals => { :post => post, :length => 500 } %>
</div>
Run Code Online (Sandbox Code Playgroud)

然后我在我的application.js中使用这个div的id来做AJAX:

$(document).ready(function() …
Run Code Online (Sandbox Code Playgroud)

ajax jquery ruby-on-rails unobtrusive-javascript

3
推荐指数
1
解决办法
2825
查看次数

如何用JS(在Rails中)不引人注意地更新页面标题

每当我使用Ajax将博客帖子加载到页面上时,我将页面设置<title>为"我的博客 - BLOGPOST_TITLE".

当然,"我的博客 - "也出现在我的应用程序布局中.

问题是,我怎么告诉我的Javascript字符串"我的博客 - "而不是在我的代码中重复它?

javascript ruby-on-rails dry unobtrusive-javascript

3
推荐指数
1
解决办法
4027
查看次数

定期刷新页面上的图像

我正在构建一个页面来显示一堆网络摄像头图像并定期更新它们,以便该页面可用于一目了然的监控.但是,我遇到了定期重新加载工作的问题.我的代码看起来像:

<div class='cameras'> 
    <div class='camera'> 
      <h4>Desk</h4> 
      <img height='240' src='http://somehost/cameras/cam0/lastsnap.jpg' width='320'> 
    </div> 
    <div class='camera'> 
      <h4>Main Room</h4> 
      <img height='240' src='http://somehost/cameras/cam1/lastsnap.jpg' width='320'> 
    </div> 
    <div class='camera'> 
      <h4>Studio</h4> 
      <img height='240' src='http://somehost/cameras/cam2/lastsnap.jpg' width='320'> 
    </div> 
  </div> 
Run Code Online (Sandbox Code Playgroud)

理想情况下,我希望每隔几秒钟从指定的URL重新加载这些内容,而不必为每个摄像头生成单独的JS.我已经使用了jQuery来处理其他一些零碎的东西,所以坚持下去会很棒 - 然后,一个普通的JS解决方案也很好.

任何想法,StackOverflow JS众神?

javascript jquery image unobtrusive-javascript

3
推荐指数
1
解决办法
5659
查看次数

将参数从服务器对象传递到JavaScript的最佳方法

我渲染一个带有表格的视图.表的每一行都是可以编辑的对象.所以,这个表的最后一列有一堆"编辑"按钮.当单击其中一个EDIT按钮时,JavaScript函数必须选取当前行所表示的对象的Id.最后,我想最终得到一个干净的HTML:没有"onclick","onmouseover"属性,也没有自定义的属性.下面我有两个我不感兴趣的例子.有什么好主意吗?

例1:

View.aspx

<td>
  <input type="button" value="EDIT" onclick="JSFunction(<%: ObjectId %>)" />
</td>
Run Code Online (Sandbox Code Playgroud)

JavaScript的

function JSFunction(id)
{
    //some code that does whatever with id
}
Run Code Online (Sandbox Code Playgroud)

例2:

View.aspx

<td>
  <input type="button" value="EDIT" customAttribute="<%: ObjectId %>" />
</td>
Run Code Online (Sandbox Code Playgroud)

JavaScript的

$('input[type=button]').click(function() {
    var id = this.attr('customAttribute');
    //some code that does whatever with id
});
Run Code Online (Sandbox Code Playgroud)

PS如果你能想出一个更好的问题标题,请分享:)

html javascript jquery unobtrusive-javascript asp.net-mvc-2

3
推荐指数
1
解决办法
1315
查看次数

仅在Javascript可用时隐藏html

我想这更多是关于SEO而不是想要支持禁用Javascript的浏览器.我有Javascript/jQuery代码,读取一些HTML,基本上显示它更好..remove()在此过程中实际删除了html(使用jQuery的函数).

所以我隐藏了html,因此页面加载时没有任何可视化的工件.但是现在我想只在启用Javascript时隐藏它.我想最简单的事情就是让一些Javascript <head>display: nonecss规则添加到适当的元素中.

有没有更好的方法来处理这种情况?

javascript css seo jquery unobtrusive-javascript

3
推荐指数
1
解决办法
465
查看次数

是否有可能"入侵"ASP.NET MVC 3中支持的不引人注意的验证?

我希望能够使用内置的,基于数据注释的,客户端不显眼的验证,但在我知道它通过之后,我自己做了ajax表单提交.

像这样的jQuery位:

$('#form').submit(function(e) {
  e.preventDefault();

  if (PassesUnobtrusiveValidation()) {
    // ajax submit form
  }
});
Run Code Online (Sandbox Code Playgroud)

是否存在PassedValidation事件或类似事件(内置于默认的基于asp.net mvc 3数据注释的客户端验证)我可以挂钩(如示例中的伪代码)?

我想这样做,所以我仍然可以利用基于数据注释的验证,然后以我想要的方式异步提交表单.我希望避免在客户端编写常见的验证,让asp.net mvc 3为我处理它,然后提交表单我想要的,使用$.ajax();

validation jquery unobtrusive-javascript data-annotations asp.net-mvc-3

3
推荐指数
1
解决办法
730
查看次数

Rails 3中的Ajax回调与Prototype,而不是jQuery

我正在将应用程序从Rails 2升级到3并正在重新设计所有远程功能以使用Unobtrusive Javascript.我正在努力的是在UJS中处理ajax回调.

我发现有很多资源可以展示如何使用jQuery实现这些回调,但对于原型来说并不多.也许你可以帮我解决这个问题.

在Rails 2中,我有这个:

<% remote_form_for @foo, {:loading => "loading_function()", :complete => "complete_function()" } do |f| %>
 ...
<% end %>
Run Code Online (Sandbox Code Playgroud)

在Rails 3中,我有这个:

<%= form_for @foo, :remote => true do |f| %>
 ....
<% end %>
Run Code Online (Sandbox Code Playgroud)

从我到目前为止所知(可能是错误的),我需要将旧的加载/完成函数附加到表单,以便它们将被Rails.js中的handleRemote函数触发.我只是不确定该怎么做.

再一次,我在Prototype中这样做.因此,非常感谢特定于该框架的答案.

unobtrusive-javascript prototypejs ruby-on-rails-3

3
推荐指数
1
解决办法
2690
查看次数

在asp.net mvc3中使用jquery unobtrusive在元素下面显示验证消息

我需要在元素下面显示验证消息.

我试过添加如下消息:

[Required(ErrorMessage = "<br /> UserName is required")]
public string UserName { get; set; }
Run Code Online (Sandbox Code Playgroud)

但是上面提到的消息被呈现为(验证消息被编码的地方):

<input type="text" value="" tabindex="1" style="height:auto; width:280px;" size="40" name="UserName" maxlength="15" id="UserName" data-val-required="&amp;lt;br /&amp;gt; UserName is required" data-val="true" class="textfield">
Run Code Online (Sandbox Code Playgroud)

验证消息

如果我<br/>从模型的消息中删除,验证消息显示在两行中.此外,我已尝试添加如下验证,但验证消息未被覆盖,如下面的验证方法(从"UserName is required"覆盖到"输入用户名"):

$('#userSignInform').validate({
    rules:
        {
            UserName: { required: true },
            Password: { required: true }
        },
    messages:
        {
            UserName: { required: "Enter Username" },
            Password: { required: "Enter the Password" }
        },
    errorPlacement: function (error, element)
        {
            error.appendTo(element.parent("td").next("td"));
        }
});
Run Code Online (Sandbox Code Playgroud)

是什么需要解决方法来显示元素下面的验证消息,并使用jquery validate方法覆盖模型消息?

jquery unobtrusive-javascript jquery-validate asp.net-mvc-3

3
推荐指数
1
解决办法
1万
查看次数

如何处理JavaScript事件(例如'link_to:remote')Rails方式?

我正在使用Ruby on Rails 4,我想以Rails的方式处理JavaScript事件.也就是说,例如,鉴于我有以下内容

link_to('destroy', article_path(@article), :method => :delete, :remote => true)
Run Code Online (Sandbox Code Playgroud)

当我点击上面生成的链接时,我希望successJS事件通过删除已删除的文章DOM元素来更新页面内容.无论是什么,AJAX响应都应该被忽略.

我知道rails.js文件的存在,但我不知道如何使用它来完成我正在寻找的东西.

javascript ruby-on-rails unobtrusive-javascript javascript-events ruby-on-rails-4

3
推荐指数
1
解决办法
1263
查看次数