关于layui在IE中报错 XX为空或不是对象问题

实在找不到解决办法的,改源码是一个解决办法 0.0
IE报错 HAS_PARENT为空或不是对象
在layui.all.js中找到报错的位置为

function(t,i){
	i.HAS_PARENT||o>1&&o==n.colspan||(i.HAS_PARENT=!0,i.parentKey=e+"-"+l,o+=parseInt(i.colspan>1?i.colspan:1))
}

这种报错在一般的浏览器上是会被忽略的,但在IE上遇到JScript报错页面就会停止执行。
IE上使用debugger调试的时候如果报错后也继续往下执行,页面也是能正常加载显示的。
所以在报错之前加了个判断,这样页面就能正常往下执行了:

function(t,i){
	if(i) {
		i.HAS_PARENT||o>1&&o==n.colspan||(i.HAS_PARENT=!0,i.parentKey=e+"-"+l,o+=parseInt(i.colspan>1?i.colspan:1))
	}
}

更多需要修改layui源码的方法可以查看资料:https://www.youkuaiyun.com/
编写自动匹配的下拉框(已解决IE8兼容).

<think>嗯,用户想了解Linux内核时钟框架中的clk_set_parent函数的使用方法。首先,我需要回忆一下这个函数的作用和基本用法。clk_set_parent函数用于动态切换时钟源,改变某个时钟的父时钟,从而调整其频率时钟树结构。这在动态电压频率调整(DVFS)者节能模式下可能会用到。 接下来,我应该考虑用户可能的应用场景。他们可能在开发驱动程序时需要调整某个外设的时钟源,比如切换SPI控制器的时钟父源以提高性能降低功耗。因此,给出一个具体的代码示例会很有帮助,比如在platform_driver的probe函数中调用clk_set_parent。 然后,需要注意使用该函数的步骤。首先必须获取时钟句柄,使用clk_get者devm_clk_get。然后准备目标父时钟,检查是否支持切换,可能需要调用clk_prepare_enable来启用时钟。调用clk_set_parent后,需要处理可能的错误,比如返回值的检查,负数表示错误码。最后,在不需要的时候释放时钟资源,但如果是使用devm管理的,可能不需要手动释放。 还需要提醒用户注意事项,比如时钟源的可切换性,是否在硬件设计中允许动态切换。另外,切换时钟父源可能导致子时钟频率变化,影响外设工作状态,因此需要在适当的时机进行切换,比如设备挂起恢复时。内核文档中的时钟API部分也是重要的参考,特别是Documentation/clk.txt,但需要确认用户的内核版本是否对应。 用户可能遇到的问题包括如何确定可用的父时钟,这时候可以建议使用clk_get_parent和clk_get_num_parents函数来枚举。另外,错误处理方面,比如返回-EINVAL表示父时钟无效,者父时钟未准备好,需要检查父时钟是否正确获取并启用。 最后,生成相关问题时要考虑用户进一步的需求,比如如何动态获取可用父时钟列表,错误处理的最佳实践,时钟切换对系统的影响,以及替代函数如clk_set_rate的使用场景。这些都能帮助用户更全面地理解和应用clk_set_parent函数。</think>关于Linux内核时钟框架中`clk_set_parent`函数的使用,以下是关键信息整理: ### 功能说明 `clk_set_parent`用于动态切换时钟源父节点,其函数原型为: $$int\ clk_set_parent(struct\ clk\ *clk,\ struct\ clk\ *parent)$$ 该操作将改变时钟树拓扑结构,可能导致子时钟频率变化[^1]。 ### 使用步骤 1. **获取时钟句柄**: ```c struct clk *clk = devm_clk_get(&device->dev, "spi_clk"); struct clk *new_parent = devm_clk_get(&device->dev, "pll_clk"); ``` 2. **切换前检查**: ```c if (clk_has_parent(clk, new_parent)) { // 支持切换 } ``` 3. **执行切换**: ```c int ret = clk_set_parent(clk, new_parent); if (ret < 0) { dev_err(dev, "Failed to set parent: %d\n", ret); } ``` ### 典型应用场景 - 动态电压频率调节(DVFS) - 低功耗模式切换 - 硬件工作模式变更(如UART波特率调整) ### 注意事项 1. 必须确保目标父时钟已调用`clk_prepare_enable` 2. 切换可能导致子时钟短暂失锁 3. 部分硬件限制同步切换操作,需参考具体SoC文档 ### 参考文档 1. Linux内核文档:`Documentation/driver-api/clk.rst` 2. 时钟API头文件:`include/linux/clk.h`
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值