diff --git a/src/main/java/org/olat/core/gui/components/Window.java b/src/main/java/org/olat/core/gui/components/Window.java
index efe4ec614ce9fa83b3e9c7eb0f9e428e937a3b9f..9e1d5ca2d5407ed39d3a0160c6d339c349b7191d 100644
--- a/src/main/java/org/olat/core/gui/components/Window.java
+++ b/src/main/java/org/olat/core/gui/components/Window.java
@@ -139,6 +139,12 @@ public class Window extends AbstractComponent {
 	 */
 	public static final Event ABOUT_TO_DISPATCH = new Event("about_to_dispatch");
 	
+	/** The parameter name for the case where the event doesn't need to trigger a response */
+	public static final String NO_RESPONSE_PARAMETER_MARKER = "no-response";
+
+	/** The parameter value for the case where the event doesn't need to trigger a response */
+	public static final String NO_RESPONSE_VALUE_MARKER = "oo-no-response";
+	
 	private String uriPrefix;
 	private ComponentCollection contentPane;
 	private String latestTimestamp;
@@ -335,6 +341,11 @@ public class Window extends AbstractComponent {
 							// this can happen e.g. on quick double-clicks, so that the dom-replacement-command never reaches the client.
 							if (isDebugLog) log.debug("no ajax dispatch: component not found (target=null)");
 							validForDispatching = false;
+							//check no response call
+							String noResponseMarker = ureq.getParameter("no-response");
+							if("oo-no-response".equals(noResponseMarker)) {
+								return;
+							}
 						}
 						
 						// 2.) collect dirty components (top-down, return from sub-path when first dirty node met)
diff --git a/src/main/java/org/olat/core/gui/render/URLBuilder.java b/src/main/java/org/olat/core/gui/render/URLBuilder.java
index 13ae1d1b129270b7fd9395509caf7a2449b7c758..0a5da9a4ca0271e87ca518ab8592e8b31dadb570 100644
--- a/src/main/java/org/olat/core/gui/render/URLBuilder.java
+++ b/src/main/java/org/olat/core/gui/render/URLBuilder.java
@@ -32,6 +32,7 @@ import java.util.regex.Pattern;
 
 import org.olat.core.gui.UserRequest;
 import org.olat.core.gui.components.Component;
+import org.olat.core.gui.components.Window;
 import org.olat.core.gui.components.form.flexible.impl.NameValuePair;
 import org.olat.core.gui.control.winmgr.AJAXFlags;
 import org.olat.core.logging.AssertException;
@@ -197,6 +198,8 @@ public class URLBuilder {
 		}
 		sb.append("'");
 		commandParameters(sb, commands);
+		//no response marker
+		commandParameters(sb, new NameValuePair(Window.NO_RESPONSE_PARAMETER_MARKER, Window.NO_RESPONSE_VALUE_MARKER));
 		return sb;
 	}
 	
diff --git a/src/main/java/org/olat/core/gui/render/velocity/VelocityRenderDecorator.java b/src/main/java/org/olat/core/gui/render/velocity/VelocityRenderDecorator.java
index 6a87b4231c17d4d219d864a2f44a014521e62b2f..19e4c01d8a20531e16be2758d37fa8f769242c26 100644
--- a/src/main/java/org/olat/core/gui/render/velocity/VelocityRenderDecorator.java
+++ b/src/main/java/org/olat/core/gui/render/velocity/VelocityRenderDecorator.java
@@ -193,6 +193,12 @@ public class VelocityRenderDecorator implements Closeable {
 		return "";
 	}
 	
+	public String openNoResponseJavaScriptCommand(String command) {
+		renderer.getUrlBuilder().openXHRNoResponseEvent(target, null,
+				new NameValuePair(VelocityContainer.COMMAND_ID, command));
+		return "";
+	}
+	
 	/**
 	 * 
 	 * @param command
diff --git a/src/main/java/org/olat/modules/video/ui/_content/video_run.html b/src/main/java/org/olat/modules/video/ui/_content/video_run.html
index 5ebd1058078b4615a13fb4fffc7632ebe1432b86..f90cc3638abce7a22e0ffe3430df27d2b298998a 100644
--- a/src/main/java/org/olat/modules/video/ui/_content/video_run.html
+++ b/src/main/java/org/olat/modules/video/ui/_content/video_run.html
@@ -38,34 +38,32 @@
 			
 			## Callback to communicate with the server
 			success: function (mediaElement, domObject) {
-#*
-## does not work for now with autoplay
 
 				## listen to play events, fired when movie is finished
 		        mediaElement.addEventListener('play', function(e) {
 		        	if (!o_info.linkbusy) {
-		        		$r.openJavaScriptCommand("play"), 'currentTime', mediaElement.currentTime, 'src', mediaElement.src);
+		        		$r.openNoResponseJavaScriptCommand("play"), 'currentTime', mediaElement.currentTime, 'src', mediaElement.src);
 					}
 		        }, false);
 		        ## listen to pause events, fired when movie is paused by user
 		        mediaElement.addEventListener('pause', function(e) {
 		        	if (!o_info.linkbusy) {
-						$r.openJavaScriptCommand("pause"), 'currentTime', mediaElement.currentTime, 'src', mediaElement.src);
+						$r.openNoResponseJavaScriptCommand("pause"), 'currentTime', mediaElement.currentTime, 'src', mediaElement.src);
 					}
 		        }, false);
 		        ## listen to seeked events, fired when user uses the slider in the movie
 		        mediaElement.addEventListener('seeked', function(e) {
 		        	if (!o_info.linkbusy) {
-						$r.openJavaScriptCommand("seeked"), 'currentTime', mediaElement.currentTime, 'src', mediaElement.src);
+						$r.openNoResponseJavaScriptCommand("seeked"), 'currentTime', mediaElement.currentTime, 'src', mediaElement.src);
 					}
 		        }, false);
 		        ## listen to end events, fired when movie is finished
 		        mediaElement.addEventListener('ended', function(e) {
 		        	if (!o_info.linkbusy) {
-						$r.openJavaScriptCommand("ended"), 'currentTime', mediaElement.currentTime, 'src', mediaElement.src);
+						$r.openNoResponseJavaScriptCommand("ended"), 'currentTime', mediaElement.currentTime, 'src', mediaElement.src);
 					}
 		        }, false);
-*#
+
 				##
 		        ## Preselect the preferred source
 		        #if($useSourceChooser)