Jak sprawić by przejął on style CSS ze strony B?
To zależy, jak ten widget jest osadzany. Tradycyjny iframe blokuje style z zewnętrznej strony, ale jeśli widget byłby np. divem, który jest dynamicznie wypełniany treścią, to style powinny zostać normalnie odziedziczone. No chyba że strona nie ma żadnych stylów globalnych, wtedy pewnie trzeba byłoby kombinować z możliwością dodawania klas do widgeta.
Ogólnie IMO lepiej dać możliwość skonfigurowania wyglądu, niż automatycznie coś dziedziczyć. Ja bym taki widget widział tak:
- Sam widget jest eksportowany jako Custom Element. Jeśli dodamy do tego Shadow DOM, to dostaniemy podobny poziom enkapsulacji jak iframe, ale równocześnie ominie się problemy związane z brakiem automatycznego dostosowywania się rozmiarów widgetu. Aczkolwiek raczej bym spróbował najpierw bez Shadow DOM, bo może się okazać, że wgl go nie potrzebujemy.
- Całe stylowanie odbywa się przy pomocy zmiennych CSS. Wówczas integrator będzie mógł sobie dowolnie zmieniać wygląd przy ich pomocy.
Przy okazji jakie są metody (i używane tagi) do osadzania widgetów z innych lokalizacji? Kiedyś był iframe, ale to już historia.
Nie wiem, skąd przekonanie, że iframe to historia, bo to obecnie najpopularniejszy sposób na osadzanie takich widgetów.