2012-08-02 39 views
12

jQuery:Javascript引发错误“操作不安全”我试图找到不解释输入元素的占位符属性的浏览器的回退解决方案。 我有这个简单的jQuery脚本,但它抛出Error当设置值

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中,还没有在其他浏览器中测试过它。

+4

呃?从来没有见过这个错误什么浏览器扔它? – Utkanos 2012-08-02 15:34:53

+2

FWIW'$(this).val()'永远不会返回'undefined'。 – 2012-08-02 15:35:22

+1

您是否有任何浏览器扩展或插件可能会禁用Javascript修改表单值? – 2012-08-02 15:37:34

回答

26

我刚在我的项目中修复了一个类似的问题。原来,我试图设置一个<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')); 
      } 
     }); 
}); 
+4

辉煌。这实际上是问题所在。谢谢! – 2012-09-03 18:24:03

+1

出于安全原因,无法为btw设置文件输入 – grasshopper 2016-09-16 09:51:46

0

我有一个不安全的警告与antoher函数结合。 原因很简单,一个库函数被作为参数给出的数组调用,但它期望一个元素(dom)。 结果是预期的,但我相信,这不会在任何情况下。 因此,检查变量的类型是否是您(或另一方)想要的变量类型。