【问题标题】:jQuery: Javascript throws Error "The operation is insecure" when setting valuejQuery:设置值时 Javascript 抛出错误“操作不安全”
【发布时间】:2013-09-27 13:53:49
【问题描述】:

我正在尝试为不解释输入元素的占位符属性的浏览器找到一个后备解决方案。 我有这个简单的 jQuery 脚本,但它抛出了一个错误

SecurityError: "The operation is insecure.
this.value = val;"

这是我的脚本:

$('document').ready(function(){
       $('input').each(function() {
           if ($(this).val() === '' || $(this).val() === undefined) {
               $(this).val($(this).attr('placeholder'));
           }
       });
});

有人知道我能做什么吗?或者我做错了什么?或者这个错误意味着什么? 它发生在 Firefox 中,尚未在其他浏览器中测试过。

【问题讨论】:

  • 嗯?从来没有见过那个错误。是什么浏览器扔的?
  • FWIW $(this).val() 永远不会返回 undefined
  • 您是否有任何正在运行的浏览器扩展程序或插件可能会阻止 Javascript 修改表单值?
  • 您的页面上有密码输入吗?您能否将脚本分解为特定的 <input> 元素?
  • 在某个用户位置的特定浏览器上,当我尝试在浏览器的本地存储中保存文本时出现此错误。必须是一些浏览器安全设置。

标签: javascript jquery


【解决方案1】:

我刚刚在我的项目中解决了一个类似的问题。事实证明,我试图设置 <input type="file" ...> 输入的值。看来您可能面临同样的问题,因为您选择的是文档的所有输入,无论其类型如何。

如果您安装了 firebug,请尝试通过插入 log 命令来查找导致此错误的输入,然后再尝试修改输入的值。

$('document').ready(function(){
       $('input').each(function() {
           if ($(this).val() === '' || $(this).val() === undefined) {

               // Log goes here
               window.console.log(
                   'There is an input without a value!', 
                   this);

               $(this).val($(this).attr('placeholder'));
           }
       });
});

【讨论】:

  • 太棒了。这实际上是问题所在。谢谢!
  • 出于安全原因,btw 无法设置文件输入
【解决方案2】:

我收到了与 antoher 函数相关的不安全警告。 原因很简单,一个库函数是用一个给定的数组作为参数调用的,但它需要一个元素(dom)。 结果是预期的,但我敢肯定,无论如何都不会这样。 因此,请检查您的变量类型是否是您(或另一方)想要的类型。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-11-03
    • 2019-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-05
    • 1970-01-01
    相关资源
    最近更新 更多