如何检查 Rails 中是否启用了 javascript?这样我就可以在 View 中做这样的事情:
<div>
<% if javascript_enabled? %>
<p>Javascript Enabled!</p>
<%- else -%>
<p>No Javascript</p>
<%- end -%>
</div>
最佳答案
你可以检测到它,但它并不漂亮。
首先,您需要一个新的 Controller ,其中包含更新 session 超时的操作:
class JavascriptController < ApplicationController
def confirm
session[:javascript_updated] = Time.now
end
end
接下来,您需要在所有页面中包含一个 javascript 操作,以便在每次加载页面时调用该 Controller 操作。最简单的方法是将它包含在布局中包含的“javascript-confirm.js”文件中(在这个特定示例中,我使用了 Prototype 的 Ajax.Request,因此您也需要将它包含在您的 javascript 中):
function confirmJavascript()
{
// Assuming you are using Prototype
new Ajax.Request('/JavascriptController/confirm');
}
myTimeoutFunction();
setInterval(myTimeoutFunction, 10000); // invoke each 10 seconds
这将在您的所有页面 View 中调用确认操作。最后,您必须控制自上次在应用程序 Controller 中确认以来经过了多少时间。
class ApplicationController < ActionController::Base
JAVASCRIPT_TIME_LIMIT = 10.seconds
before_filter :prepare_javascript_test
private
def prepare_javascript_test
if (session[:javascript_updated].blank? or
Time.now - session[:javascript_updated] > ApplicationController::JAVASCRIPT_TIME_LIMIT)
@javascript_active = true
else
@javascript_active = false
end
end
end
您现在将在所有 Controller 中拥有一个名为 @javascript_active
的变量。
即使用户激活/停用 javascript,它也应该可以工作,精度为 10 秒。如果您的某些页面加载时间超过 10 页(即包含大量图像),它可能无法正常工作。在这种情况下增加时间限制(在 applicationcontroller 和你的 javascript 上)
免责声明:我尚未测试此代码,可能潜伏着一些错误 - 但它应该为您指明正确的方向。
关于javascript - 使用 Rails 检查是否启用了 Javascript(服务器端),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2315648/