DOCTYPE 的选择是否会影响 javascript 代码所看到的 DOM?

2024-01-15

鉴于一个利用 ASP.NET、javascript、css 等技术的大型遗留项目,我想知道是否以任何方式更改网页的 DOCTYPE,例如从 HTML 4.0 Transitional 到 XHTML 1.0 Transitional(或其他方式)可能会破坏网页的 javascript 功能。

有很多关于不同 DOCTYPES 如何影响页面(css)渲染的文章和讨论,但我似乎找不到任何关于破坏任何代码的类似内容。

我正在寻找有关一般注意事项的文章的链接,以便更好地发现现有代码中的潜在问题并避免在编写新代码时产生问题。


更改 DOCTYPE 是否会破坏任何 javascript 函数实际上取决于这些函数的设计防御性:)

例如,当文档呈现在怪癖模式, document.body(BODY) 成为所谓的“根元素”;当以标准模式渲染时,该根元素通常是document.documentElement(HTML)。这是一个相当实质性的区别。如果确定浏览器屏幕尺寸的脚本总是查询clientWidth/clientHeight属性关闭document.documentElement,它显然会在怪异模式下报告不正确的结果(因为,IIRC,document.documentElement.clientWidth/clientHeight将表示 HTML 元素的尺寸,而不是屏幕元素的尺寸)。

大多数 JS 库通常会明确声明是否支持 quirks 模式(例如,我们 - Prototype.js - 不支持 quirks 模式)。

说起HTML 与 XHTML,为了让浏览器将文档呈现为 XHTML,您必须首先为其提供正确的“Content-type”标头(即 application/xhtml+xml)。如果您只将 doctype 更改为 XHTML,但仍将文档作为“text/html”提供,我知道的大多数浏览器仍会将其解析(并呈现)为 HTML 文档.

请注意,迄今为止,IE 无法理解“真正的”XHTML 内容,这就是为什么将文档作为 text/html(使用 HTML4.01 doctype)提供是推荐的方法(当然,除非 IE 不在受支持的浏览器之列) 。

至于“真正的”XHTML 文档中的 DOM 特性,我听说有些事情像document.write“不起作用”并且访问节点属性应始终通过getAttribute/setAttribute(而不是通过更简单的属性访问器)。 IIRC,也存在一些问题innerHTML.

“真正的”XHTML 文档中缺乏有关 DOM 的信息可能是由于它在一般 Web 文档/应用程序中不切实际(即 IE 缺乏对它的支持)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

DOCTYPE 的选择是否会影响 javascript 代码所看到的 DOM? 的相关文章

  • 如何通过单击图像预览上的“x”从文件输入中删除图像?

    我目前有一个文件输入 一旦用户上传图像 就会显示图像预览 在图像预览上 有一个 x 可以从列表中删除图像预览 单击此 x 后 有什么方法可以从输入中的文件集中删除图像吗
  • 仅当表单已提交时才触发 jQuery 表单验证?

    不引人注目的验证基于这样的想法 don t进行表单验证 直到用户提交表单 一旦发生这种情况 如果表单上的某些内容无效 那么一旦用户更改了每个字段 就会立即验证它 我想做的是 不显眼地 触发表单元素的验证 也就是说 only如果用户已尝试提交
  • 网站 YouTube 嵌入视频不断播放

    我正在使用 youtube 提供的 iframe 在我的网站上嵌入视频 我还使用了一个 css 弹出窗口 这是我从这个页面学到的http www pat burt com web development how to do a css po
  • jquery 验证错误位置

    这看起来很简单 但我无法弄清楚 我正在使用 jquery 验证插件 我验证所有文件 但我想要的是在输入文本行中显示验证消息警报 例如在电子邮件输入中 请填写电子邮件地址 但现在它出现在所有字段下 在我的html中
  • Ember.js 处理 View 事件后转换到路由

    Setup 我有一个 Ember 应用程序 支持使用 Imgur API 上传图像 我已经有一个工作路线和模板来处理任何 Imgur ID 但我想在上传新图像后转换到此路线 使用返回的 Imgur ID 这是该应用程序的相关部分 http
  • Leaflet js虚构地图

    我是 Leaflet 的新手 我想了解如何创建完全交互式的虚构地图 我有一张图像想要转换为传单地图 该图像基本上像图表一样具有许多连接和点 我想首先将该图像转换为地图 能够将鼠标悬停在这些点上 突出显示它们并显示有关它们的信息 并且还可以在
  • 如何使用 JavaScript 获取没有 HTML 元素的纯文本?

    我的 HTML 中有 1 按钮和一些文本 如下所示 function get content I don t know how to do in here
  • HTML2canvas 和 Canvas2image,下载的屏幕截图不显示我的 HTML 图像

    我一直在开发一个 HTML 页面 我想将其转换为图像 我一直在使用 html2canvas 和 canvas2image 脚本并采用此代码http jsfiddle net 8ypxW 3 http jsfiddle net 8ypxW 3
  • 在为 RXJS 可观察量编写测试时,如何避免让调度程序通过我的业务逻辑?

    我发现使某些测试通过的唯一方法是显式地将调度程序传递给函数 为了便于说明 请考虑以下函数 function doStuff stream return stream delay 100 filter x gt x 2 0 map x gt
  • Ebay api GetSellerList,解析响应 XML

    我正在使用 eBay 交易 api 来获取当前列出的卖家股票 我正在使用 GetSellerList 调用 我在解析 xml 时遇到问题 然后将其插入到网站商店中 这是 xml 请求
  • 如何让 jquery Tooltipster 插件适用于新创建的 DOM 元素?

    我正在使用 Tooltipster 插件http calebjacob com tooltipster http calebjacob com tooltipster 这很棒 但我已经动态生成了插入到 DOM 中的内容 工具提示程序似乎没有
  • 如何在 Angular 中从父组件访问子组件?

    I have mat paginator在子组件a中 如下所示 子组件 html
  • Select2 下拉列表动态添加、删除和刷新项目

    这让我发疯 为什么 Select2 不能在其页面上实现清晰的方法或示例如何在 Select2 上进行简单的 CRUD 操作 我有一个 select2 从 ajax 调用获取数据
  • 如何将函数内的捕获错误传递给父级

    我有这几行代码示例 想知道下面的逻辑到底如何 try var response child console log why here catch err console log should show this err function c
  • JavaScript onresize 事件多次触发

    我在尝试仅在触发 onresize 事件时运行一次函数时遇到一些麻烦 我已经看过这个问题DOM onresize 事件 https stackoverflow com questions 1500312 javascript onresiz
  • 如何在 Google 地图 V3 中创建编号地图标记?

    我正在制作一张上面有多个标记的地图 这些标记使用自定义图标 但我还想在顶部添加数字 我已经了解了如何使用旧版本的 API 来实现这一点 我怎样才能在V3中做到这一点 注意 当您将鼠标悬停在标记上时 标题 属性会创建一个工具提示 但我希望即使
  • 需要有关 React Js 的帮助

    我是 React Js 新手 我的代码无法正常工作 请看下面 这是我的脚本文件Main jsx 该文件由 React 编译 输出放置在 dist 文件夹下的 main js 文件中 var react require react react
  • 防止文本区域出现新行

    我正在开发聊天功能 使用 Vue 并使用文本区域作为输入 以便溢出换行 并且对于编写较长消息的用户来说更具可读性 不幸的是 当用户按下 Enter 键并提交时 光标会在提交之前移动到新行 从而使用户体验感觉不佳 关于如何使用普通 Javas
  • 使用异步调用时如何从 javascript 更新元刷新?

    我有一个系统 它使用元刷新来注销页面 该系统会在空闲用户后进行清理 不用担心 服务器也会导致会话超时 我开始通过 ajax 进行一些操作 不是真正的 xml 但这不是重点 我可以运行从异步请求返回的javascript 所以我想知道是否可以
  • 用于 C# XNA 的 Javascript(或类似)游戏脚本

    最近我准备用 XNA C 开发另一个游戏 上次我在 XNA C 中开发游戏时 遇到了必须向游戏中添加地图和可自定义数据的问题 每次我想添加新内容或更改游戏角色的某些值或其他内容时 我都必须重建整个游戏或其他内容 这可能需要相当长的时间 有没

随机推荐

  • React中如何通过Key查找元素?

    ul li 1234 li li 5678 li li 9 li ul 如何通过Key查找元素并更改元素值 如addClass innerHtml 注意 在 Plain React 中 没有 Flux 或 Jsx 进入key已在 React
  • 为什么 groupby 和rolling 不能一起工作?

    我有一个从 coinmarketcap 中抓取的 df 我正在尝试计算 close price 列的波动率指标 但是当我使用 groupby 时 我收到一条错误消息 final coin data vol final coin data g
  • Doctrine2:[语义错误]如果不选择至少一个根实体别名,则无法通过标识变量选择实体

    这是我使用查询生成器进行的查询 它运行得很好 带来了用户表和模块表的所有结果 其中具有多对多关联 public function getUser id qb this gt getEm gt createQueryBuilder gt se
  • 具有引用完整性的 NoSQL/RDBMS 混合(删除级联)?

    是否有一种数据库可以为您带来引用完整性的优势并能够使用 SQL 类型语言进行查询 同时还可以松散地定义实体的数据属性以及它们之间的关系 例如 采用 RBAC 类型模型 其中有权限 用户 用户组和角色 复杂 灵活的模型可能具有以下规则 角色可
  • Python:如何创建一个要求准确字数的函数?

    这是我到目前为止所拥有的 import string 所以我让用户写一个 5 个单词的句子 只要求 5 个单词 def main sentence raw input Enter a 5 worded sentence if len wor
  • IIS 7.5 没有图像 css js 显示

    我有 2 台 Windows 2008 R2 x64 服务器 NLB ARR 具有共享配置 我的应用程序文件位于网络共享中 ASP net 页面 aspx 运行良好 但 css 图像 js 不起作用 我还有一个 htm 文件 可以很好地显示
  • 反编译Obj C框架

    我想反编译iOS Twitter 框架 如果事实上我从xcode 的模拟器中获取twitterd 文件 该文件已预编译为在x86 而不是ARM 上运行 至于我使用的工具http code google com p i386codedump
  • 需要快速读取 Android 传感器

    Issue 我正在开发一个应用程序 每 5 需要一个新的加速度数据 毫秒 我的方法 我创建了一个远程服务 只读取加速度 来自 SensorManager 的数据 我还将读取速率设置为 初始化时 延迟最快 传感器管理器 然后我也使用IPC进行
  • 如何在 Windows 7 64 位上安装 GitHub 时修复此错误

    http picsmashup com images jnasdh JPG http picsmashup com images jnasdh JPG 组件 Microsoft NET Framework 4 x86 和 x64 安装失败
  • Wix Burn 捆绑包 - 必须是管理员

    我创建了一个 WIX 刻录包 在捆绑包中 我安装了 Net 4 如果未安装 然后再安装 2 个 msi 文件 1 是第三部分 msi 另一个是我使用 WIX 为我的软件创建的 msi 我需要成为计算机上的管理员才能运行这些 msi 文件 如
  • OpenCV 中组合仿射变换的内置函数?

    Opencv中有没有结合仿射变换的内置函数 我也可以自己编写它 但如果可能的话我会坚持使用库函数 Cheers 现在我这样做 我分配 a1 a2 r 矩阵 所有 3x3 眼睛 我用变换矩阵 a1aff a2aff 替换前两个矩阵的顶部部分
  • parseInt 与 unary plus,何时使用哪个?

    这条线有什么区别 var a parseInt 1 10 a 1 和这条线 var a 1 a 1 This jsperf测试 http jsperf com parseint vs unary operator表明一元运算符在当前的 ch
  • 追加到Python字典中的列表[重复]

    这个问题在这里已经有答案了 有没有更优雅的方式来编写这段代码 我在做什么 我有钥匙和日期 可以有多个日期分配给一个键 因此我正在创建一个日期列表字典来表示它 下面的代码工作正常 但我希望有一个更优雅和 Pythonic 的方法 dates
  • 如何使用 setLocalNightMode() 在每个活动中启用 MODE_NIGHT_YES?

    我最近想创建一个设置 在我的 Android 应用程序中启用夜间模式 我在互联网上搜索并找到了一个很好的解决方案 其中包含 AppCompatDelegate 的 DayNight 主题和一个简短的代码片段 if settingsShare
  • 如何在 C++ 中使用 cin 隐藏用户输入? [复制]

    这个问题在这里已经有答案了 可能的重复 从 std cin 读取密码 https stackoverflow com questions 1413445 read a password from stdcin 我正在尝试制作一个简单的密码程
  • 在 Azure AD B2C 中,ACR 或 TFP 声明是否应该具有策略名称?

    根据这个文档 https learn microsoft com en us azure active directory b2c active directory b2c reference tokens the Policy Name应
  • FluentNHibernate - 自动映射忽略属性

    我有一个基类 其中包含一个名为 IsDirty 的属性 它用于域模型 不是数据库表中的列 当使用自动映射时 Fluent nhibernate 尝试将此列添加到表中 解决这个问题的一种方法是把 ForTypesThatDeriveFrom
  • Flutter:如何更新单个列表项的 ValueNotifier

    我有一个列表生成器 用于创建包含内容的卡片 在这张卡中 我有一个按钮和文本小部件 基本上 我想在按下按钮时更新文本小部件 我尝试使用 ValueNotifier 并且它有效 但它会更新每个列表项的值 这是主要功能 我创建了 ValueNot
  • HTTP 范围:使用 WebClient C# 的字节

    我正在尝试恢复文件下载 我使用下面的代码成功下载了我需要的文件 downlaodfile new WebClient downlaodfile Headers Add Range bytes 0 600000 downlaodfile Do
  • DOCTYPE 的选择是否会影响 javascript 代码所看到的 DOM?

    鉴于一个利用 ASP NET javascript css 等技术的大型遗留项目 我想知道是否以任何方式更改网页的 DOCTYPE 例如从 HTML 4 0 Transitional 到 XHTML 1 0 Transitional 或其他