相关疑难解决方法(0)

Chrome中的"未捕获的TypeError:非法调用"

当我用requestAnimationFrame以下代码做一些原生支持的动画时:

var support = {
    animationFrame: window.requestAnimationFrame ||
        window.mozRequestAnimationFrame ||
        window.webkitRequestAnimationFrame ||
        window.msRequestAnimationFrame ||
        window.oRequestAnimationFrame
};

support.animationFrame(function() {}); //error

support.animationFrame.call(window, function() {}); //right
Run Code Online (Sandbox Code Playgroud)

直接打电话给support.animationFrame意志......

未捕获的TypeError:非法调用

在Chrome中.为什么?

javascript html5 google-chrome typeerror

128
推荐指数
3
解决办法
13万
查看次数

jQuery - 非法调用

jQuery v1.7.2

我有这个功能在执行时给我以下错误:

Uncaught TypeError: Illegal invocation
Run Code Online (Sandbox Code Playgroud)

这是功能:

$('form[name="twp-tool-distance-form"]').on('submit', function(e) {
    e.preventDefault();

    var from = $('form[name="twp-tool-distance-form"] input[name="from"]');
    var to = $('form[name="twp-tool-distance-form"] input[name="to"]');
    var unit = $('form[name="twp-tool-distance-form"] input[name="unit"]');
    var speed = game.unit.speed($(unit).val());

    if (!/^\d{3}\|\d{3}$/.test($(from).val()))
    {
        $(from).css('border-color', 'red');
        return false;
    }

    if (!/^\d{3}\|\d{3}$/.test($(to).val()))
    {
        $(to).css('border-color', 'red');
        return false;
    }

    var data = {
        from : from,
        to : to,
        speed : speed
    };

    $.ajax({
        url : base_url+'index.php',
        type: 'POST',
        dataType: 'json',
        data: data,
        cache : false
    }).done(function(response) {
        alert(response);
    });

    return false; …
Run Code Online (Sandbox Code Playgroud)

ajax jquery post

97
推荐指数
6
解决办法
26万
查看次数

JavaScript函数别名似乎不起作用

我只是在阅读这个问题并且想尝试别名方法而不是函数包装方法,但我似乎无法在它们的调试窗口和Firefox 3或3.5beta4或Google Chrome中使用它们.在测试网页中.

萤火虫:

>>> window.myAlias = document.getElementById
function()
>>> myAlias('item1')
>>> window.myAlias('item1')
>>> document.getElementById('item1')
<div id="item1">
Run Code Online (Sandbox Code Playgroud)

如果我把它放在一个网页中,对myAlias的调用会给我这个错误:

uncaught exception: [Exception... "Illegal operation on WrappedNative prototype object" nsresult: "0x8057000c (NS_ERROR_XPC_BAD_OP_ON_WN_PROTO)" location: "JS frame :: file:///[...snip...]/test.html :: <TOP_LEVEL> :: line 7" data: no]
Run Code Online (Sandbox Code Playgroud)

Chrome(为了清晰起见插入了>>>):

>>> window.myAlias = document.getElementById
function getElementById() { [native code] }
>>> window.myAlias('item1')
TypeError: Illegal invocation
>>> document.getElementById('item1')
<div id=?"item1">?
Run Code Online (Sandbox Code Playgroud)

在测试页面中,我得到了相同的"非法调用".

难道我做错了什么?其他人可以重现这个吗?

另外,奇怪的是,我只是尝试了它在IE8中工作.

javascript alias closures function

81
推荐指数
2
解决办法
3万
查看次数

addeventlistener drop error"Uncaught TypeError:Illegal invocation"

我按功能创建新的Object,我创建了sortable要使用的方法,但是在回调函数上有错误

;"use strict";
(function(){
    function libJS(){};

    libJS.prototype = {
        loopElement : function(element, options, callback){
            var libObj = this;
            var goesCallback = function(element, options, callback){
                if (!!callback && libObj.isFunction(callback)) callback(element, options);
            };

            if (libObj.isElement(element)) goesCallback(element, options, callback);
            else if (libObj.isString(element) && /^(\.|\#)[\w\d\-_]+$/g.test(element)){
                if (/^\./g.test(element)){
                    element = document.getElementsByClassName(element.replace('.', ''));
                    var length = element.length || 0, i;
                    for(i = 0; i < length; i++) goesCallback(element[i], options, callback);
                }else{
                    element = document.getElementById(element.replace('#', ''));
                    if (!!element) goesCallback(element, options, callback);
                }
            }
        },

        isElement …
Run Code Online (Sandbox Code Playgroud)

javascript drag-and-drop callback html5sortable

10
推荐指数
1
解决办法
558
查看次数

为什么不能为document.getElementById()设置别名?

可能重复:
JavaScript函数别名似乎不起作用
将document.getElementById设置为变量

如果可能的话,代码会更有效:

var min = document.getElementById;
Run Code Online (Sandbox Code Playgroud)

然后document.getElementById()使用min().

不试图编写缩小的代码,但在这种特殊情况下,可以减少范围查找并缩短某些行.

这是语法问题还是对语言的限制?

javascript

4
推荐指数
1
解决办法
757
查看次数