Image via Marvel
Not that familiar with tertiary Spider-Man character Madame Web? You’re not alone. Don’t worry though, you’ll get a full introduction and a brand new origin story when the new movie comes out next year.
ComicBook spoke with producer Lorenzo di Bonaventura about how exactly they’ll handle Web, and it’s not going to be like in the comic books. Bonaventura said that the movie is “really the story” of the character.
“So, in that respect, if you’re a Spider-Man fan, you’re gonna love the character because you know it from the comic books, which she doesn’t really have that big a character in the comic books, we’re doing the origin story of Madame Web. And so you meet her before she’s actually the person that you know in the comic book and you come to understand how she becomes that person. So, I think that’ll be a really fresh new terrain for the fans.”
He’s not lying. Of all the Spider-Man adjacent characters that Sony could make a movie about, Madame Web doesn’t seem like it would be at the top of the list. That of course means nothing if the movie is really good, but everything if it’s not.
Perhaps hedging its bets, Sony made sure to assemble a marquee cast for the movie, including Sydney Sweeney, Dakota Johnson, Emma Roberts, Adam Scott and a number of others. S.J. Clarkson, of Jessica Jones fame, will direct the movie.
In the comics, Madame Web goes by the name Cassandra Webb. She was born blind and suffers from a mysterious neurological condition that also allows her psychic powers. Peter Parker enlists her help to capture some criminals, and a team up of sorts begins after she tells him she knows he’s Spider-Man.
She also is confined to a wheelchair in the comics. Something tells me that might not be the case when the movie is released on Feb. 16, 2024.
‘;
About the author
‘+
// ”+
// ‘
‘+
// ‘
// ”+
// ‘ ‘+
// ‘ ‘+
// ‘
‘+
// ”);
// launch zerg
// if ( WGTCADS.isMobile ) {
// (function () {
// var zergnet = document.createElement(‘script’);
// zergnet.type=”text/javascript”;
// zergnet.async = true;
// zergnet.src=”https://www.zergnet.com/zerg.js?id=”;
// var znscr = document.getElementsByTagName(‘script’)[0];
// znscr.parentNode.insertBefore(zergnet, znscr);
// })();
// }
// else {
// (function() {
// var zergnet = document.createElement(‘script’);
// zergnet.type=”text/javascript”; zergnet.async = true;
// zergnet.src=”https://www.zergnet.com/zerg.js?id=”;
// var znscr = document.getElementsByTagName(‘script’)[0];
// znscr.parentNode.insertBefore(zergnet, znscr);
// })();
// }
// hide next link
jQuery(‘.post_pagination .next’).parent().css(‘visibility’, ‘hidden’);
refreshAds();
// tracking
if (typeof window.parent.postMessage !== ‘undefined’) {
parent.postMessage(“encaction”, “*”); // `*` on any domain
}
// hide other rows on mobile
// if ( WGTCADS.isMobile ) {
// jQuery(‘#zerglayout .zergentity:gt(1)’).hide();
// }
}
else {
/*
jQuery.get(addressValue, qparams, function (result) {
var this_result = jQuery(result);
$post_content.removeClass(‘loading’).html(this_result.find(‘#post_content’).children());
this_result.find(‘#post_content > script’).appendTo(‘#post_content’);
if (currentPageUrl == pageLen + 1) {
// hide regular partner ads and show different IDs for tracking
jQuery(‘.js-footer-zerg:eq(0)’).css({‘height’: 0, ‘width’: 0, ‘overflow’: ‘hidden’});
} else {
jQuery(‘.js-footer-zerg:eq(0)’).css({‘height’: ‘auto’, ‘width’: ‘auto’, ‘overflow’: ‘visible’});
}
setTimeout(function () {
loadTheSlider();
}, 1000);
CMNUNT.refreshAds();
// tracking
if (typeof window.parent.postMessage !== ‘undefined’) {
parent.postMessage(“encaction”, “*”); // `*` on any domain
}
}, ‘html’);
*/
jQuery.get(addressValue, qparams, function (result) {
var this_result = jQuery(result);
var video =this_result.find(“[src*=’content.jwplatform.com’]”);
if (video.length >0) {
url = video[0].src;
console.log(url);
// var videourl = this_result.html().substr(video);
var sc = $(”).load(url, function () {
var sub1 = sc.html().substring(sc.html().search(‘document.write’));
var str=”document.write”;
if (sub1.charAt(sub1.search(“;”) – 4) == ‘”‘) {
var sub2 = sub1.substring(28, sub1.search(“;”) – 4);
} else {
var sub2 = sub1.substring(25, sub1.search(“;”) – 10);
}
this_result.find(‘.wgtc-post-video’).append(“”);
$post_content.removeClass(‘loading’).html(this_result.find(‘#post_content’).children());
this_result.find(‘#post_content > script’).appendTo(‘#post_content’);
if (currentPageUrl == pageLen + 1) {
// hide regular partner ads and show different IDs for tracking
jQuery(‘.js-footer-zerg:eq(0)’).css({‘height’: 0, ‘width’: 0, ‘overflow’: ‘hidden’});
} else {
jQuery(‘.js-footer-zerg:eq(0)’).css({
‘height’: ‘auto’,
‘width’: ‘auto’,
‘overflow’: ‘visible’
});
}
setTimeout(function () {
loadTheSlider();
}, 1000);
refreshAds();
// tracking
if (typeof window.parent.postMessage !== ‘undefined’) {
parent.postMessage(“encaction”, “*”); // `*` on any domain
}
});
}
else
{
$post_content.removeClass(‘loading’).html(this_result.find(‘#post_content’).children());
this_result.find(‘#post_content > script’).appendTo(‘#post_content’);
if (currentPageUrl == pageLen + 1) {
// hide regular partner ads and show different IDs for tracking
jQuery(‘.js-footer-zerg:eq(0)’).css({‘height’: 0, ‘width’: 0, ‘overflow’: ‘hidden’});
} else {
jQuery(‘.js-footer-zerg:eq(0)’).css({
‘height’: ‘auto’,
‘width’: ‘auto’,
‘overflow’: ‘visible’
});
}
setTimeout(function () {
loadTheSlider();
}, 1000);
refreshAds();
// tracking
if (typeof window.parent.postMessage !== ‘undefined’) {
parent.postMessage(“encaction”, “*”); // `*` on any domain
}
}
}, ‘html’);
/*
jQuery.get(‘http://wegotthiscovered.com/testvido.html’, qparams, function (result) {
var this_result = jQuery(result);
$post_content.removeClass(‘loading’).html(this_result);
// this_result.find(‘#post_content > script’).appendTo(‘#post_content’);
if (currentPageUrl == pageLen + 1) {
// hide regular partner ads and show different IDs for tracking
jQuery(‘.js-footer-zerg:eq(0)’).css({‘height’: 0, ‘width’: 0, ‘overflow’: ‘hidden’});
} else {
jQuery(‘.js-footer-zerg:eq(0)’).css({‘height’: ‘auto’, ‘width’: ‘auto’, ‘overflow’: ‘visible’});
}
setTimeout(function () {
loadTheSlider();
}, 1000);
CMNUNT.refreshAds();
// tracking
if (typeof window.parent.postMessage !== ‘undefined’) {
parent.postMessage(“encaction”, “*”); // `*` on any domain
}
}, ‘html’);*/
}
};
if (typeof jwplayer == ‘function’)
{
if($vid_short_code.length > 0) {
var address_href = window.location.pathname;
var address_array = address_href.split(“https://wegotthiscovered.com/”);
var final_array = address_array[address_array.length-2];
var not_numeric = isNaN(final_array);
if(not_numeric != true) { $vid_short_code.css( “display”, “none” ); }
}
var playerInstance = jwplayer(0);
var playerContainerEl = document.querySelector(‘.wgtc-post-video’);
function getElementOffsetTop(el) {
var boundingClientRect = el.getBoundingClientRect();
var bodyEl = document.body;
var docEl = document.documentElement;
var scrollTop = window.pageYOffset || docEl.scrollTop || bodyEl.scrollTop;
var clientTop = docEl.clientTop || bodyEl.clientTop || 0;
return Math.round(boundingClientRect.top + scrollTop – clientTop +700);
}
function getScrollTop() {
var docEl = document.documentElement;
return (window.pageYOffset || docEl.scrollTop) – (docEl.clientTop || 0);
}
var config = playerInstance.getConfig();
var utils = playerInstance.utils;
// get height of player element
// var playerHeight = config.containerHeight;
// get player element position from top of document
var playerOffsetTop = getElementOffsetTop(playerContainerEl);
// set player container to match height of actual video element
// this prevents container from disappearing and changing element positions
// on page when player becomes minimized. this also leaves a nice visual
// placeholder space for minimized player to return to when appropriate
// playerContainerEl.style.height = playerHeight + ‘px’;
// below we handle window scroll event without killing performance
// this is a minimal approach. please consider implementing something more extensive:
// i.e. http://joji.me/en-us/blog/how-to-develop-high-performance-onscroll-event
// determine player display when scroll event is called
// if inline player is no longer visible in viewport, add class
// .player-minimize to minimize and float. otherwise, remove the class to put
// player back to inline inline position
function onScrollViewHandler() {
var minimize = getScrollTop() >= playerOffsetTop;
if (!is_mobile()) {
// utils.toggleClass(playerContainerEl, ‘player-minimize’, minimize);
}
// update the player’s size so the controls are adjusted
// playerInstance.resize();
}
// namespace for whether or not we are waiting for setTimeout() to finish
var isScrollTimeout = false;
// window onscroll event handler
window.onscroll = function() {
// skip if we’re waiting on a scroll update timeout to finish
if (isScrollTimeout) return;
// flag that a new timeout will begin
isScrollTimeout = true;
// otherwise, call scroll event view handler
onScrollViewHandler();
// set new timeout
setTimeout(function() {
// reset timeout flag to false (no longer waiting)
isScrollTimeout = false;
}, 80);
};
}
});
function setCookie(cname, cvalue, exdays) {
var d = new Date();
d.setTime(d.getTime() + (exdays*24*60*60*1000));
var expires = “expires=”+d.toUTCString();
document.cookie = cname + “=” + cvalue + “; ” + expires + “; path=/”;
}
function getCookie(cname) {
var name = cname + “=”;
var ca = document.cookie.split(‘;’);
for(var i=0; i
var gallerySlideCount = jQuery(‘.gallery-slider .slider-list li’).length;
gallerySlider = jQuery(‘.gallery-slider .slider-list’).bxSlider({
adaptiveHeight: true,
preloadImages: ‘all’,
pagerCustom: ‘#thumbnails’,
mode:’fade’,
prevText:”,
nextText:”,
nextSelector:’.control.next’,
prevSelector:’.control.prev’,
onSliderLoad: function (currentIndex) {
var slideCount = gallerySlideCount;
/* lazy loading */
var direction = 1;
var $sliderImgs = jQuery(“.slider-list li img”);
var $curImg = $sliderImgs.eq(currentIndex);
if ($curImg && $curImg.hasClass(‘lazy’)) {
$curImg.attr(‘src’, $curImg.data(‘src’)).one(‘load’, function () {
jQuery(this).removeClass(‘lazy’);
gallerySlider.reloadSlider();
});
}
var $nextImg = $sliderImgs.eq(currentIndex+direction);
if ($nextImg && $nextImg.hasClass(‘lazy’)) {
$nextImg.attr(‘src’, $nextImg.data(‘src’)).one(‘load’, function () {
jQuery(this).removeClass(‘lazy’);
});
}
/* end lazy loading */
jQuery(‘.js-image-count’).html( (currentIndex+1) + ‘ of ‘ + slideCount );
jQuery(‘.gallery-slider .gallery-slider-wrap’).css(‘height’, ‘auto’);
if(currentIndex > 0) {
changeHash(currentIndex);
}
if (currentIndex == 0) {
jQuery(‘.control.prev’).hide();
} else {
jQuery(‘.control.prev’).show();
}
jQuery(‘.caption-item[data-index=’+currentIndex+’]’).show();
},
onSlideBefore: function (ele, oI, nI) {
var slideCount = gallerySlideCount;
/* lazy loading */
var direction = nI – oI;
var $sliderImgs = jQuery(“.slider-list li img”);
var $curImg = $sliderImgs.eq(nI);
if ($curImg.hasClass(‘lazy’)) {
$curImg.attr(‘src’, $curImg.data(‘src’)).one(‘load’, function () {
jQuery(this).removeClass(‘lazy’);
gallerySlider.resizeSlider();
});
}
var $nextImg = $sliderImgs.eq(nI+direction);
if ($nextImg && $nextImg.hasClass(‘lazy’)) {
$nextImg.attr(‘src’, $nextImg.data(‘src’)).one(‘load’, function () {
jQuery(this).removeClass(‘lazy’);
gallerySlider.resizeSlider();
});
}
/* end lazy loading */
jQuery(‘.js-image-count’).html( (nI+1) + ‘ of ‘ + slideCount );
var galleryOffset = jQuery(ele).parents(‘.gallery-wrap’).offset().top – 50;
if (galleryOffset) {
jQuery(‘html, body’).animate({scrollTop: galleryOffset+’px’}, 600);
}
if(nI > 0) {
changeHash(nI);
} else {
changeHash(”);
}
if ((oI+1) == slideCount && (nI+1) == (slideCount-1)) {
// _gaq.push([‘_trackEvent’, ‘GalBackLastPage’, ‘clickEvent’, ‘Went back on gallery last page’]);
// ga(‘send’, ‘event’,’GalBackLastPage’ , ‘clickEvent’, ‘Went back on gallery last page’);
}
if (nI == 0) {
jQuery(‘.control.prev’).hide();
} else {
jQuery(‘.control.prev’).show();
}
jQuery(‘.caption-item’).hide();
jQuery(‘.caption-item[data-index=’+nI+’]’).show();
/*
CMNUNT.refreshAds([
‘ads-desktop-btf-leaderboard’,
‘ads-desk-square-1’,
‘ads-desk-square-2’,
‘cmn_ad_toolbar’,
‘top’,
‘ads-mobile-square-1’,
‘ads-mobile-square-2’,
‘ads-mobile-square-3’,
‘ads-mobile-square-4’,
‘ads-mobile-square-end’,
‘toolbar’]);*/
refreshAds();
// tracking
if (typeof window.parent.postMessage !== ‘undefined’) {
parent.postMessage(“encaction”,”*”); // `*` on any domain
}
}
});
}
}
function refreshAds () {
if ( WGTCADS.isMobile ) {
freestar.freestarReloadAdSlot([
“wegotthiscovered_300x250_incontent”,
“wegotthiscovered_300x600_300x250_Sidebar_4”,
“wegotthiscovered_728x90_970x250_970x90_320x50_ATF”,
“wegotthiscovered_300x250_incontent_2”,
“wegotthiscovered_728x90_320x50_Adhesion”,
“wegotthiscovered_300x250_Mobile_Footer”,
“freestar-slot-footer-ad”
]);
} else {
cpmstarAPI({
kind:”refresh”,
data:{
modules:[
“sidebar1”,
“sidebar2”,
“sidebar3”,
“sidebar4”,
“atf”,
“728x90adhesion”
]
}
});
}
}
function changeHash( index ){
var pushAddress, hashnohash;
if (index == ”) {
window.history.pushState({},””, ‘https://’ + window.location.hostname + window.location.pathname);
pushAddress = location.pathname + location.search + ‘wgtc-gallery/’;
} else {
window.location.hash = index;
hashnohash = window.location.hash.substr(1);
pushAddress = location.pathname + location.search + ‘wgtc-gallery/’ + hashnohash + “https://wegotthiscovered.com/”;
}
//pushAddress = addressValue.replace(/^.*\/\/[^\/]+/, ”).substr(1);
gtag(‘config’, ‘UA-17178859-1’, {
“page_path”: pushAddress
});
}