使用css关闭javascript?

使用css关闭javascript?,javascript,mobile,css,media-queries,Javascript,Mobile,Css,Media Queries,我使用了一个媒体查询,将移动访问者引导到一个单独的、特定于移动的样式表。问题是索引页面上有使用JS的元素,我需要在移动版本中关闭它-我该怎么做 补充说明:我不熟悉JS-我可以使用html和css,也可以使用其他人的JS:-/ 关于下面的一些评论,我担心由于加载不必要的代码而导致的mobile加载时间。有人能告诉我在我的元素中添加什么,让文档只加载js(如果不是mobile的话)吗?这是一个正确的问题吗?为什么不使用一个脚本来检测与您的媒体查询相同的规格?这样您就可以有选择地激活脚本 框架中存在这

我使用了一个媒体查询,将移动访问者引导到一个单独的、特定于移动的样式表。问题是索引页面上有使用JS的元素,我需要在移动版本中关闭它-我该怎么做

补充说明:我不熟悉JS-我可以使用html和css,也可以使用其他人的JS:-/


关于下面的一些评论,我担心由于加载不必要的代码而导致的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来随意添加代码(我正在努力)。我担心在手机上加载不必要的脚本会导致不必要的加载速度变慢。如何防止移动设备加载脚本?通过为手机使用不同的样式表,我希望能为它添加一些内容