0

我有一个函数可以根据浏览器的大小更新元素大小:

window.onresize = function() { setContentHeight(); }

然而,既然我已经使用 AJAX 来交换主题(改变 body 的 innerHTML),这个函数需要改变。新主题不仅有新的图像,还有完全不同的布局。因此,旧的 onresize 函数只会弄乱页面。我想了两种方法来解决这个问题:

方法 1) 将参数传递给稍作修改的函数setContentHeight(themeSelection);,其中参数用于 switch/case 语句。优点:主题交换只会更改传递的变量的值。缺点:setContentHeight(themeSelection);将包含所有主题的代码,并且比需要的更长。

方法 2) 通过评估从 XMLHTTPRequest 解析的一些脚本代码来覆盖函数。但是,我不知道如何让 JS 修改现有函数或简单地删除它并启动一个新函数。优点:这个功能会很短 缺点:我不知道怎么做。

你会做什么,或者你会完全做其他事情?如果您的答案是方法 2,那么您能否提供有关如何完成的链接?当然,我自己完成大部分工作没有问题,但如果它是首选方法,我可以使用一些建议和方法#2 的示例。

4

1 回答 1

1

如果你正在改变 body 的innerHTML,你不能也只是添加/删除一个类吗?或者,更好的是,更改一个全局变量:

var current_theme = 'some_theme';

function loading_new_theme() {
    ...
    current_theme = 'new_theme';
}

然后您可以setContentHeight根据该全局变量分配高度。

(另外:如果你不打算将任何参数传递给setContentHeight,你可以这样做:

window.onresize = setContentHeight;

)

于 2011-01-28T06:04:25.357 回答