我知道iframe如果它是跨域的话,就不可能告诉用户在内部做了什么.我想要做的是跟踪用户是否完全点击了iframe.我想象这样一个场景,还有一个看不见div的顶部iframe和的div意愿,就在这时,通过点击事件的iframe.
这样的事情可能吗?如果是,那我该怎么办呢?的iframes是广告,所以我必须在所使用的标签没有控制权.
我正在创建一个事件,所以使用DOM Event构造函数:
new Event('change');
Run Code Online (Sandbox Code Playgroud)
这在现代浏览器中工作正常,但在Internet Explorer 9,10和11中,它失败了:
Object doesn't support this action
Run Code Online (Sandbox Code Playgroud)
如何修复Internet Explorer(理想情况下通过polyfill)?如果我不能,是否有可以使用的解决方法?
custom-events dom-events internet-explorer-9 internet-explorer-10 internet-explorer-11
我有以下代码:
<script type="text/javascript">
function SubmitForm()
{
form1.submit();
}
function ShowResponse()
{
}
</script>
.
.
.
<div>
<a href="#" onclick="SubmitForm();">Click</a>
</div>
Run Code Online (Sandbox Code Playgroud)
我想捕获html响应form1.submit?我该怎么做呢?我可以在form1.submit方法中注册任何回调函数吗?
请务必阅读以下所有评论.不推荐使用Object.Watch和Object.Observe.请参阅Elliot B对更新(截至2018年6月)方法的评论.
我一直在寻找一种简单的方法来监控对象或变量的变化,我发现Object.Watch,Mozilla浏览器支持这种方式,但IE不支持.所以我开始四处寻找,看是否有人写过某种等价物.
关于我发现的唯一一件事是jQuery插件,但我不确定这是不是最好的方法.我当然在大多数项目中都使用jQuery,所以我并不担心jQuery方面......
无论如何,问题是:有人能告诉我一个jQuery插件的工作示例吗?我有问题让它工作......
或者,是否有人知道任何可以跨浏览器工作的更好的替代品?
答案后更新:
谢谢大家的回复!我试过这里发布的代码:http: //webreflection.blogspot.com/2009/01/internet-explorer-object-watch.html
但我似乎无法使其与IE一起工作.下面的代码在Firefox中运行良好,但在IE中没有任何作用.在Firefox中,每次Object.Observe更改Object.watch()时watcher.status都会调用in ,您可以在页面上看到输出.在IE中,这不会发生,但我可以看到document.write()更新值,因为最后一次watcher.watch()调用显示正确的值(在IE和FF中).但是,如果没有调用回调函数,那那就毫无意义...... :)
我错过了什么吗?
var options = {'status': 'no status'},
watcher = createWatcher(options);
watcher.watch("status", function(prop, oldValue, newValue) {
document.write("old: " + oldValue + ", new: " + newValue + "<br>");
return newValue;
});
watcher.status = 'asdf';
watcher.status = '1234';
document.write(watcher.status + "<br>");
Run Code Online (Sandbox Code Playgroud) 我有一个选择列表:
<select id="filter">
<option value="Open" selected="selected">Open</option>
<option value="Closed">Closed</option>
</select>
Run Code Online (Sandbox Code Playgroud)
当我选择Closed页面重新加载时.在这种情况下,它显示已关闭的票证(而不是打开).我手动操作时工作正常.
问题是当我Closed用Watir选择时页面不会重新加载:
browser.select_list(:id => "filter").select "Closed"
Run Code Online (Sandbox Code Playgroud)
这通常意味着不会触发某些JavaScript事件.我可以用Watir发射事件:
browser.select_list(:id => "filter").fire_event "onclick"
Run Code Online (Sandbox Code Playgroud)
但我需要知道要开火的事件.
有没有办法找出为元素定义了哪些事件?
在下面的示例代码中,我将onclick事件处理程序附加到包含文本"foo"的span.处理程序是一个匿名函数,弹出alert().
但是,如果我分配给父节点alert(),则此innerHTML事件处理程序将被销毁 - 单击"foo"将无法弹出警告框.
这可以解决吗?
<html>
<head>
<script type="text/javascript">
function start () {
myspan = document.getElementById("myspan");
myspan.onclick = function() { alert ("hi"); };
mydiv = document.getElementById("mydiv");
mydiv.innerHTML += "bar";
}
</script>
</head>
<body onload="start()">
<div id="mydiv" style="border: solid red 2px">
<span id="myspan">foo</span>
</div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud) 可能重复:
每60秒调用一次函数
每隔5秒连续调用一次javascript函数.我见过setTimeOut事件.如果我想连续不断,它会正常工作吗?
我已经看过这些问题:
但是,他们都没有回答如何使用连接到节点的事件侦听器列表addEventListener,而无需addEventListener在创建事件侦听器之前修改原型.
VisualEvent不会显示所有事件侦听器(特定于iPhone的事件),我想以编程方式(稍微)执行此操作.
我有一个包含方法的对象.这些方法被放入匿名函数内的对象中.它看起来像这样:
var t = {};
window.document.addEventListener("keydown", function(e) {
t.scroll = function(x, y) {
window.scrollBy(x, y);
};
t.scrollTo = function(x, y) {
window.scrollTo(x, y);
};
});
Run Code Online (Sandbox Code Playgroud)
(还有更多代码,但这足以显示问题)
现在我想在某些情况下停止事件监听器.因此我试图做一个removeEventListener,但我无法弄清楚如何做到这一点.我在其他问题中已经读过,无法在匿名函数上调用removeEventListener,但在这种情况下是否也是如此?
我在匿名函数中创建了一个方法,因此我认为这是可能的.看起来像这样:
t.disable = function() {
window.document.removeEventListener("keydown", this, false);
}
Run Code Online (Sandbox Code Playgroud)
为什么我不能这样做?
还有其他(好的)方法吗?
奖金信息; 这只需要在Safari中工作,因此缺少即支持.
Webkit的转换结束事件称为webkitTransitionEnd,Firefox是transitionEnd,opera是oTransitionEnd.在纯JS中处理所有这些问题的好方法是什么?我应该做浏览器嗅探吗?或分别实施每一个?还有其他一些方法没有发生在我身上?
即:
//doing browser sniffing
var transitionend = (isSafari) ? "webkitTransitionEnd" : (isFirefox) ? "transitionEnd" : (isOpera) ? "oTransitionEnd";
element.addEventListener(transitionend, function(){
//do whatever
},false);
Run Code Online (Sandbox Code Playgroud)
要么
// Assigning an event listener per browser
element.addEventListener("webkitTransitionEnd", fn);
element.addEventListener("oTransitionEnd", fn);
element.addEventListener("transitionEnd", fn);
function fn() {
//do whatever
}
Run Code Online (Sandbox Code Playgroud) dom-events ×10
javascript ×9
ads ×1
css ×1
events ×1
form-submit ×1
forms ×1
html ×1
iframe ×1
innerhtml ×1
jquery ×1
safari ×1
watir ×1