Javascript仅在ios上抛出typeerror

Javascript throws typeerror on ios only

本文关键字:typeerror 仅在 ios Javascript      更新时间:2023-09-26

我遇到了一个奇怪的问题,我敢打赌这只是某个地方的一个非常愚蠢的错误,但我就是不知道我的代码出了什么问题。。

我有一个网站,它在每个常见操作系统上的每个(常见)浏览器上都能完美工作。在这个页面上,我有一个搜索栏,它在电脑上也可以很好地工作。这个栏还有一个jquery keyup事件,用于启动搜索。此事件未在ios上启动(第一个问题)。所以我添加了一个按钮作为变通方法。但这在ios上也不起作用。如果它能正常工作,它应该调用一个JS方法,该方法只将用户重定向到search.php页面,同时附加一个名为query的GET变量。我在电脑上加载了页面,错误控制台显示:

TypeError:不是函数(正在评估"search()")

不知何故,它似乎没有加载此方法。不管出于什么原因。所有其他JS方法都可以正常工作。只是这个拒绝工作。

搜索栏:

<input placeholder="Search" id="searchbar">

链接如下:

<a href="#" id="searchbutton" onclick="search();">start search</a>

JS方法如下所示:

var text = document.getElementById('searchbar').value;
window.location.href="./search.php?q="+text;

有什么想法吗?

似乎全局变量search由iOS保留。尝试使用另一个名称,如mySearch,然后它就工作了。

顺便说一句,您可以考虑使用名称空间或作用域来避免与库或系统发生冲突。

示例:

(function() {
    function search() {
       alert('test');
    }
    document.getElementById('searchbutton').onclick = search;
})();

或者,如果您坚持直接在元素中使用onclick

<a href="#" id="searchbutton" onclick="MyNamespace.search();">start search</a>
<script>
var MyNamespace = (function() {
    function search() {
       alert('test');
    }
    return {
        search: search
    };
})();
</script>