前端 - tips

0716:
pc开发一定要以ie为主调试,否则到了快上线,手忙脚乱

ie浏览器下慎用apply,会出现跳转失效的问题
// window.history.go.apply(window.history, arguments);
// window.location.replace.apply(window.location, arguments);
0716 end:

location.replace

1:b->c 是通过window.location.replace(“..xx/c”) 此时b页面的url会被c页面代替,并且点击后退按钮时会回退到a页面(最开始的页面)
2:b->c是通过window.location.href(“..xx/c”) 此时b页面的路径会被c页面代替,但是点击回按钮后页面回退的是b页面

Babel
Babel 默认只转码 ES6 的新语法(syntax),而不转换新的 API,比如 Iterator、Generator、Set、Maps、Proxy、Reflect、Symbol、Promise 等全局对象,以及一些定义在全局对象上的方法(比如 Object.assign、Array.from)都不会转码。
如果想让这些方法运行,必须使用babel-polyfill,为当前环境提供一个垫片。
http://babeljs.io/docs/en/babel-plugin-transform-runtime/

babel-polyfill
转码 ES6 的新的 API,如果想让这些方法运行,必须使用babel-polyfill,为当前环境提供一个垫片。

fetch
https://www.cnblogs.com/huilixieqi/p/6494380.html

Es6-promise
https://www.npmjs.com/package/es6-promise
在IE8支持promise

bluebird.js
支持IE4+的promise,

Fetch
使用promise方式的请求,相比ajax,请求不会自动把cookie带上

浏览器文件-内存缓存与硬盘缓存
在浏览器中,浏览器会在js和图片等文件解析执行后直接存入内存缓存(for memory cache)中,那么当刷新页面时只需直接从内存缓存中读取(from memory cache)
css文件则会存入硬盘文件中,所以每次渲染页面都需要从硬盘读取缓存(from disk cache);
通过ensure异步加载的js会缓存在磁盘中(for disk cache);
如果只是普通的script引入的js-浏览器默认会存在内存缓存中-中断进程重新打开还是会重新访问
https://www.cnblogs.com/duiniweixiao/p/8884274.html

require.ensure和import () 异步加载,ie8不兼容,暂无组件解决

es6-promise.auto
es6-promise: 是个库而已,不会自动polyfill;
es6-promise.auto会检测Promise是否存在,若存在原生的Promise,则不执行;
否则会应用polyfill;

await/async — ES7语法
async onReady () {
async function b () {
console.log(1);
};
await b().then(() => {
console.log(2);
});
}
一般需要在函数片段外层包一下async或者在生命周期名前加async
async () => {

}
// async 返回到是promise
需要另外在babel中添加组件babe-plugin-transform-runtime,
babel-polyfill只转es6的语法


中转页跳转,在success中继续跳转中转页,接口不能算完全请求成功,所以console日志没有成功的日志;
报错是:接口response界面 fail data, 表示接口未完成被重定向

chrome控制台-preserve log可以记录所有历史的接口请求日志;

<think>我们正在讨论的是前端开发中的一个CSS属性或功能:show-overflow-tips。这个属性通常与表格控件(如jqGrid或其他类似的数据表格插件)相关,用于控制当单元格内容溢出时是否显示工具提示(tooltip)。 根据常见的用法,`show-overflow-tips`是一个布尔属性,当设置为true时,如果单元格的内容超过了单元格的宽度,就会在鼠标悬停时显示一个包含完整内容的工具提示。 然而,需要注意的是,`show-overflow-tips`并不是标准的CSS属性。它可能是某些特定库或框架(如jqGrid)中使用的属性。在jqGrid中,这个属性用于配置列,以决定当内容溢出时是否显示提示。 下面是一个jqGrid中使用`show-overflow-tips`的示例: ```javascript $("#grid").jqGrid({ ... colModel: [ { name: 'description', index: 'description', width: 100, showOverflowTips: true // 当内容溢出时显示提示 }, // ... 其他列定义 ] }); ``` 在这个例子中,当description列的内容超过100像素时,鼠标悬停在该单元格上会显示一个工具提示,展示全部内容。 另外,在Ext JS中也有类似的功能,但属性名可能不同。例如,在Ext JS的网格列配置中,可以使用`renderer`函数结合`title`属性来实现,或者使用`cellWrap`和`tooltip`配置项。 如果是在纯CSS中实现类似效果,我们可以使用`text-overflow: ellipsis`来显示省略号,并结合`title`属性(在HTML中)来显示提示,或者使用CSS的伪元素和:hover状态来创建工具提示。 下面是一个使用纯CSS实现溢出显示提示的例子: ```html <style> .ellipsis { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .ellipsis:hover::after { content: attr(data-title); /* 使用data-title属性作为提示内容 */ position: absolute; background: #ffffcc; border: 1px solid #ccc; padding: 5px; z-index: 100; } </style> <div class="ellipsis" data-title="这是一个很长的文本,当鼠标悬停时会显示完整内容"> 这是一个很长的文本,当鼠标悬停时会显示完整内容 </div> ``` 但是,上述CSS方法在表格单元格中使用可能需要注意定位问题,因为单元格的定位默认是静态的,需要调整。 另外,在HTML中,可以直接使用`title`属性,当内容被截断时,浏览器会自动在悬停时显示title内容(但这种方式不是所有浏览器都对被截断的内容有效,通常无论是否溢出都会显示)。因此,更可靠的方式是使用JavaScript来检测是否溢出,然后动态添加提示。 总结: 1. 如果使用jqGrid,可以直接在列配置中设置`showOverflowTips: true`。 2. 如果使用其他库,查看其文档是否有类似配置。 3. 纯CSS实现可以使用`text-overflow: ellipsis`并结合`title`属性,但要注意浏览器行为。或者使用JavaScript来动态检测溢出并添加提示。 由于用户的问题是关于`show-overflow-tips`的使用和实现细节,我们可以提供上述信息。 生成相关问题: 1. 在jqGrid中,如何为特定列启用溢出提示? 2. 如何用纯CSS实现文本溢出时显示省略号并在悬停时显示完整内容? 3. 在Ext JS中如何实现类似show-overflow-tips的功能?</think>### `show-overflow-tips` 功能详解 `show-overflow-tips` 是前端开发中常见的功能属性,主要用于控制当内容超出容器边界时是否显示提示工具(ToolTip)。以下是具体实现细节和使用方法: #### 核心实现原理 1. **内容溢出检测** 通过比较元素的 `scrollWidth` 和 `clientWidth`(水平溢出)或 `scrollHeight` 和 `clientHeight`(垂直溢出)判断内容是否溢出: ```javascript const isOverflowing = element.scrollWidth > element.clientWidth; ``` 2. **动态提示生成** 当检测到溢出时,动态创建 ToolTip 组件显示完整内容: ```javascript element.addEventListener('mouseenter', () => { if (element.scrollWidth > element.clientWidth) { tooltip.textContent = element.textContent; tooltip.style.display = 'block'; } }); ``` 3. **CSS 基础样式** 需配合以下样式实现文本截断: ```css .overflow-element { white-space: nowrap; /* 禁止换行 */ overflow: hidden; /* 隐藏溢出内容 */ text-overflow: ellipsis; /* 显示省略号 */ } ``` #### 框架中的具体实现 - **jqGrid (JavaScript 表格库)** 在列配置中启用: ```javascript colModel: [{ name: 'description', width: 100, showOverflowTips: true // 启用提示 }] ``` 底层通过 `NMCUSTOMDRAW` 消息处理绘制逻辑[^1]。 - **Element UI (Vue 组件库)** 通过 `el-tooltip` 组件实现: ```vue <el-tooltip :disabled="!isOverflow" :content="text" > <div class="truncate-text">{{ text }}</div> </el-tooltip> ``` - **原生 JavaScript 实现** 完整示例: ```html <div class="overflow-tip" data-tip="长文本内容">长文本内容</div> <script> document.querySelectorAll('.overflow-tip').forEach(el => { el.addEventListener('mouseenter', function() { if (this.scrollWidth > this.offsetWidth) { const tip = document.createElement('div'); tip.className = 'tooltip'; tip.textContent = this.dataset.tip; document.body.appendChild(tip); // 定位逻辑 const rect = this.getBoundingClientRect(); tip.style.top = `${rect.bottom + 5}px`; tip.style.left = `${rect.left}px`; } }); }); </script> ``` #### 最佳实践建议 1. **性能优化** - 使用事件委托避免绑定过多监听器 - 添加防抖逻辑防止频繁计算 ```javascript element.addEventListener('mouseenter', _.debounce(showTip, 100)); ``` 2. **无障碍访问** 添加 ARIA 属性提升可访问性: ```html <div aria-label="完整内容" role="tooltip">...</div> ``` 3. **响应式处理** 在窗口大小变化时重新检测溢出状态: ```javascript window.addEventListener('resize', checkOverflow); ``` --- ### 相关问题 1. 如何动态检测内容溢出并自动显示提示? 2. 在响应式布局中如何确保溢出提示的精确定位? 3. 不同前端框架(React/Vue/Angular)实现溢出提示的最佳实践是什么? 4. 如何优化大量溢出提示元素的面性能? [^1]: 自定义绘制相关的长指针结构,包含有关绘制操作的信息。控件发送 `NM_CUSTOMDRAW` 消息时使用的数据结构参考。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值