Safari中的内联onclick事件无法正常工作

时间:2018-03-12 13:53:33

标签: javascript html safari

首先我做了一些研究,然后我找到了这两个相关的问题:

  1. onclick event in select HTML not working in Safari

  2. OnClick not working on Safari

  3. 现在我已经尝试了两种解决方案,其中每种解决方案都可以在Chrome / Firefox中运行,但对于safari来说它只是不起作用。

    问题:

    我有lia标记,其内置onclick事件会加载更多产品,但出于某种原因在Safari上点击a标记没有任何反应,这怎么可能?

    代码:

    <li id="page_size_8">
        <a href="javascript:void(0);" onclick="return marketplaceLogin.setPageSize(\'page_size\', '.$maxAmount.', \'All\');">
            All
        </a>
    </li>
    

    只是要明确这是我尝试过什么并且它无效:

    <li id="page_size_8">
        <a href="javascript:void(0);" onfocus="return marketplaceLogin.setPageSize(\'page_size\', '.$maxAmount.', \'All\');">
            All
        </a>
    </li>
    
    <li id="page_size_8">
        <a href="javascript:void(0);" onclick="javascript:return marketplaceLogin.setPageSize(\'page_size\', '.$maxAmount.', \'All\');">
            All
        </a>
    </li>
    

    PageSize的JS:

    setPageSize: function (fieldId, fieldValue, fieldLabel) {
        "use strict";
        if (typeof fieldId !== "undefined" && typeof fieldValue !== "undefined" && typeof fieldLabel !== "undefined") {
            if (fieldValue !== null && fieldValue !== "" && fieldId !== null && fieldId !== "" && fieldLabel !== null && fieldLabel !== "") {
                if (!isNaN(fieldValue)) {
                    fieldValue = parseInt(fieldValue, 10);
                    if (fieldValue < 5) {
                        fieldValue = 5;
                    }
    
                    var selectId = '#filter_select_marketplace_login_' + fieldId;
    
                    // Update the hidden field
                    $('input[name=page_size').val(fieldValue);
    
                    // Update the dropdown
                    //window.filterSlider.updateSelectedLabel(selectId);
                    $(selectId + ' .dropdown_selected_label_left').html(fieldLabel);
    
                    // Load page 1, this closes the dropdown instantly
                    if (typeof window.page_name !== "undefined") {
                        switch (window.page_name) {
                            case 'marketplaceloginproducts':
                                marketplaceLogin.loadProductPage(1);
                                break;
                            case 'marketplaceloginorders':
                                marketplaceLogin.loadOrderPage(1);
                                break;
                        }
                    }
                }
            }
        }
        return false;
    }
    

2 个答案:

答案 0 :(得分:1)

您的代码应该直接调用函数而不返回

<li id="page_size_8">
   <a onclick="marketplaceLogin.setPageSize()">All</a>
</li>
  

缺少]输入选择上的右括号

$(input[name=page_size]).val(fieldsvalue)

在safari中进行测试,如果不起作用,它会起作用我怀疑它可能是另一个问题。

https://codepen.io/anon/pen/mxebxR?editors=1111

答案 1 :(得分:-2)

我怀疑问题是javascript命名空间正用于hrefonclick

尝试:

  1. 替换为href="#"
  2. 删除href
  3. 你也可以将逻辑从onclick移到href - 虽然我会建议不要这样做,因为它不是最佳做法。