使用css关闭javascript?
我使用了一个媒体查询,将移动访问者引导到一个单独的、特定于移动的样式表。问题是索引页面上有使用JS的元素,我需要在移动版本中关闭它-我该怎么做 补充说明:我不熟悉JS-我可以使用html和css,也可以使用其他人的JS:-/使用css关闭javascript?,javascript,mobile,css,media-queries,Javascript,Mobile,Css,Media Queries,我使用了一个媒体查询,将移动访问者引导到一个单独的、特定于移动的样式表。问题是索引页面上有使用JS的元素,我需要在移动版本中关闭它-我该怎么做 补充说明:我不熟悉JS-我可以使用html和css,也可以使用其他人的JS:-/ 关于下面的一些评论,我担心由于加载不必要的代码而导致的mobile加载时间。有人能告诉我在我的元素中添加什么,让文档只加载js(如果不是mobile的话)吗?这是一个正确的问题吗?为什么不使用一个脚本来检测与您的媒体查询相同的规格?这样您就可以有选择地激活脚本 框架中存在这
关于下面的一些评论,我担心由于加载不必要的代码而导致的mobile加载时间。有人能告诉我在我的元素中添加什么,让文档只加载js(如果不是mobile的话)吗?这是一个正确的问题吗?为什么不使用一个脚本来检测与您的媒体查询相同的规格?这样您就可以有选择地激活脚本 框架中存在这样一个脚本,用于支持旧浏览器上的媒体查询。你可以查看它,看看如何利用它 这说明了如何检查屏幕宽度和高度以模拟媒体查询屏幕检测
顺便说一下。CSS仅用于样式设置。为什么不使用一个脚本来检测媒体查询的相同规格?这样您就可以有选择地激活脚本 框架中存在这样一个脚本,用于支持旧浏览器上的媒体查询。你可以查看它,看看如何利用它 这说明了如何检查屏幕宽度和高度以模拟媒体查询屏幕检测
顺便说一下。CSS仅用于样式设置。最好的解决方案是只加载移动版本所需的脚本。由于许多设备都有数据上限,您不希望用户加载他们不需要的脚本。因此,您可以通过PHP或JavaScript检测他们的浏览器,然后加载他们平台所需的文件。最好的解决方案是只加载移动版本所需的脚本。由于许多设备都有数据上限,您不希望用户加载他们不需要的脚本。因此,您可以通过PHP或JavaScript检测他们的浏览器,然后为他们的平台加载所需的文件。我假设您的意思是页面上有嵌入脚本的元素。您需要做的第一件事是去掉嵌入的脚本,例如元素上的onclick属性。这些脚本需要移动到它们自己的外部JS文件中。完成此操作后,您只能包含站点移动版本的JS文件。我假设您的意思是页面上有嵌入脚本的元素。您需要做的第一件事是去掉嵌入的脚本,例如元素上的onclick属性。这些脚本需要移动到它们自己的外部JS文件中。完成此操作后,您只能包含站点移动版本的JS文件。两个选项: 您可以使用一个脚本在桌面上加载所有其他脚本,如果您只使用非侵入式Javascript(例如jquery),这是一个很好的选择 另一个选项是不首先在服务器端生成这些脚本。两个选项: 您可以使用一个脚本在桌面上加载所有其他脚本,如果您只使用非侵入式Javascript(例如jquery),这是一个很好的选择
另一个选择是不首先在服务器端生成这些脚本。媒体查询可能是为移动用户提供替代样式的最佳解决方案。不幸的是,对于页面逻辑,
元素没有类似的媒体
属性
但是,您可以提供脚本加载器,根据浏览器根据媒体查询选择的样式表加载所需的.js
文件。我不知道如何以一种直接、优雅的方式做到这一点,但有一种很好的方法。你必须用一个唯一的声明“标记”每个.css
(虚拟的、不重要的或设计不同的),并在页面加载后从JS中检查它,以确定浏览器应用了哪个样式表
CSS可以如下所示:
@media handheld, screen and (max-width:1023px) {
body {margin-top: 1px}
}
@media screen and (min-width:1024px) {
body {margin-top: 0px}
}
/* These would be separate .css files in a real example */
以及随附的附件如下:
window.setTimeout('wait()', 10);
function wait() {
if (!document.body)
window.setTimeout('wait()', 100)
else
onLoad();
}
function onLoad() {
var load = document.createElement('script');
var head = document.getElementsByTagName('head')[0];
var body = document.getElementsByTagName('body')[0];
var mark = window.getComputedStyle(body).getPropertyValue('margin-top');
switch (mark) {
case '0px':
load.setAttribute('src', 'handheld.js');
break;
case '1px':
load.setAttribute('src', 'screen.js');
break;
default:
load.setAttribute('src', 'somethingelse.js');
}
head.appendChild(load);
}
媒体查询可能是为移动用户提供替代样式的最佳解决方案。不幸的是,对于页面逻辑,
元素没有类似的媒体
属性
但是,您可以提供脚本加载器,根据浏览器根据媒体查询选择的样式表加载所需的.js
文件。我不知道如何以一种直接、优雅的方式做到这一点,但有一种很好的方法。你必须用一个唯一的声明“标记”每个.css
(虚拟的、不重要的或设计不同的),并在页面加载后从JS中检查它,以确定浏览器应用了哪个样式表
CSS可以如下所示:
@media handheld, screen and (max-width:1023px) {
body {margin-top: 1px}
}
@media screen and (min-width:1024px) {
body {margin-top: 0px}
}
/* These would be separate .css files in a real example */
以及随附的附件如下:
window.setTimeout('wait()', 10);
function wait() {
if (!document.body)
window.setTimeout('wait()', 100)
else
onLoad();
}
function onLoad() {
var load = document.createElement('script');
var head = document.getElementsByTagName('head')[0];
var body = document.getElementsByTagName('body')[0];
var mark = window.getComputedStyle(body).getPropertyValue('margin-top');
switch (mark) {
case '0px':
load.setAttribute('src', 'handheld.js');
break;
case '1px':
load.setAttribute('src', 'screen.js');
break;
default:
load.setAttribute('src', 'somethingelse.js');
}
head.appendChild(load);
}
关于检测移动用户有很多问题。我不认为使用CSS可以做到。。。你试过使用JS吗?为什么不使用重定向到移动样式表的相同逻辑来设置一个标志,你可以检查JS代码以确定它是否应该运行?关于检测移动用户有很多问题。我认为使用CSS无法做到这一点。。。你试过使用JS吗?为什么不使用重定向到移动样式表的相同逻辑来设置一个标志,你可以检查JS代码以确定它是否应该运行?谢谢,是的,我也很担心,正如我最初问题的新编辑中提到的。我没有掌握js来随意添加代码(我正在努力)。我担心在手机上加载不必要的脚本会导致不必要的加载速度变慢。如何防止移动设备加载脚本?通过为手机使用不同的样式表,我希望能为它添加一些内容