Попробуйте обернуть код в IIFE.
<!DOCTYPE html>
<html>
<body>
<input type=text id=d onkeyup="parsedate()">
</input>
<br>
<span id=output></span>
<script type="text/javascript" src="../../../static/js/date.js"></script>
<script>
( function() {
parsedate = function() {
var input = document.getElementById('d').value;
var output = document.getElementById('output');
var d = Date.parse(input);
if (d !== null) {
output.innerHTML = d.toString();
} else {
output.innerHTML = "------"
}
}
}());
</script>
</body>
</html>
IIFE, являющееся
(function(){
//code
}());
Что мне интересно, так это то, почему FireFox ведет себя так. Я знаю, что они добавили обновления безопасности несколько лет назад, которые не позволяют вам перезаписывать функции Date.prototype, но почему IIFE способен получить доступ к этой области?